Gente por favor, eu tento ajudar todo mundo… mas sempre deem uma olhada nas minhas respostas lá embaixo e vejam se o erro do colega nao foi o seu, porque percebo que estão tendo casos iguais.
É bom porque adianta o estudo de vocês, mas de qualquer forma eu estou aqui, então se achar que não rolou, posta com o github que olho e tento ajudar…
Bora lah
Para quem esta assistindo a aula de React Basico e percebeu que por conta da nova atualização não esta conseguindo acompanhar…
Jaz aqui algumas mudanças…
…
Primeiro… o ReactDom agora não eh mais importado e utilizado chamando o
ReactDom.render ( "componente" , "elemento html")
// Modo antigo de fazer
…
Com a atualização:
1. você importa o “ReactDom” de “React/client”.
2. chama a função createRoot passando para ela o elemento HTML (no caso a div root)
3. A partir do resultado dessa função você chama o “.render”. Passando a pagina que será renderizada
Com relação ao React-Router-Dom.
Com a nova atualização o Switch foi substituído pelo Routes …
Ao indicar a rota, não usamos mais a propriedade “component” e sim
element= < [componente aqui] />,
se não trocar , não vai funcionar a sua rota.
Ao utilizar o nome ‘Routes’ (como foi solicitado na aula) como nome de componente/função, acabariamos sobrescrevendo o “Routes from Router-Dom” que foi importado lá no topo…
Então sugiro mudar o nome para RoutesApp e atualizar nos imports de outros arquivos. >>> function RoutesApp
<<<
Também não eh mais necessário o uso de “exact” dentro das propriedades da raiz ( ’ / ’ ) … Essa questão já esta resolvida nessa ultima versão.
Para quem chegou na Aula de REACT Intermediário e viu que estah errado o primeiro vídeo…
CONSERTARAM A AULA 1 DO INTERMEDIARIO
Você pode pular a parte da instalação e reorganização das pastas…
(eu tive trabalho montando isso entao nem a pau eu vou apagar )
Primeiro instale o Styled Components….
npm install --save styled-components
Apos isso vamos reorganizar a estrutura de pastas.
- Criaremos a pasta “Pages” na pasta " SRC ".
- Dentro da pasta Pages criaremos a pasta “HOME” e “REPOSITORIES”.
- Dentro da Home e da Repositories incluiremos dois arquivos, cada um em uma, chamado styled.js e teremos essa estrutura:
Dentro da styled.js da pasta Home incluiremos o código:
import styled from 'styled-components';
export const HomeContainer = styled.div`
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
`;
export const Content = styled.div`
width: 100vw;
display: flex;
align-items: center;
justify-content: center;
`;
export const Input = styled.input`
border: 1px solid #ddd;
height: 1.5rem;
padding: 0 .5rem;
border-radius: .25rem 0 0 .25rem;
&:focus,
&:active {
outline: none;
box-shadow: none;
}
`;
export const Button = styled.button`
height: 1.5rem;
border: 1px solid #000;
background: #000;
color: #fff;
border-radius: 0 .25rem .25rem 0;
&:focus,
&:active {
outline: none;
box-shadow: none;
}
`;
export const ErrorMsg = styled.span`
display: block;
font-size: 0.65rem;
color: red;
font-weight: 600;
margin-top: 1rem;
`
E dentro da styled.js da pasta Repositories:
import styled from 'styled-components';
import { Link } from 'react-router-dom';
export const Container = styled.div`
width: 100%;
max-width: 991px;
margin: 0 auto;
`
export const Title = styled.h1`
text-align: center;
font-size: 2rem;
font-family: sans-serif;
color: #333;
`
export const List = styled.ul`
list-style: none;
padding: 0;
margin: 0;
font-family: sans-serif;
`;
export const ListItem = styled.li`
margin: .5rem 0;
background: #000;
color: #fff;
padding: .5rem;
`;
export const LinkHome = styled(Link)`
display: block;
width: 4rem;
text-align: center;
margin: 2rem auto;
background-color: #000;
padding: .5rem 0;
color: #fff;
text-decoration: none;
`;
![]()
![]()
![]()
Quando colocamos um arquivo index.js dentro de uma pasta, ao fazer a importação não eh necessário colocar
import x from './pasta/index.js
… Por padrão ao indicar somente a pasta o javascript vai em busca de um arquivo index.js automaticamente. Então vocês verão os imports só com o nome da pasta.
O arquivo Home.js da aula de React Básico devera ser renomeado para index.js e colocado dentro da pasta Home… com a seguinte estrutura:
A importação do styled.js
import * as S from './styled';
A function devera mudar seu nome para App
E o return terá essa nova sintaxe:
<S.HomeContainer>
<S.Content>
<S.Input className="usuarioInput" placeholder="Usuário" value={usuario} onChange={e => setUsuario(e.target.value)} />
<S.Button type="button" onClick={handlePesquisa}>Pesquisar</S.Button>
</S.Content>
</S.HomeContainer>
Arquivo repositories.js da Aula de React Basico vai para Pasta Repositories com o nome de index.js
E com o seguinte código:
import React from "react";
import * as S from './styled';
export default function Repositories(){
return(
<S.Container>
<S.Title> Repositorios</S.Title>
<S.List>
<S.ListItem> Repositorio: Nome do Repositorio</S.ListItem>
</S.List>
</S.Container>
)
}
Segue as telas para revisão:
Home > index.js
Home > styled.js
Repositories > index.js
Repositories > styled.js
SRC > App.js
SRC> index.js
SRC > routesApp.js
O useHistory esta depreciado, precisando ser mudado para useNavigate
…
E não se usa o método push como era no history… Chamamos somente o navigate e passamos o componente por parâmetro:
import { useNavigate } from 'react-router-dom';
function qualquer(){
const navigate = useNavigate()
navigate(" /urlaqui" )
}
Na aula 4 do Intermediario… o professor estiliza a propriedade LINK
e passa propriedade href como parâmetro.
Isso gera um erro na hora renderizar. O ideal seria o uso do to
Na aula 5… ao fazer a renderização condicional ( em miúdos, decidir o que vai ser renderizado na pagina)…
Voces podem receber um aviso de possivel problema ao usar o navigate (ou ate mesmo o history caso estejam em uma versao antiga)…
Isso eh causado porque a função de redirecionamento eh externa ao useEffect.
Você consegue resolver isso dizendo ao useEffect que você esta utilizando uma dependência externa a ele (o navigate) e passa-lo como parâmetro dentro de um array, após a chamada da função que devera ser executado pelo useEffect.
A imagem com Aviso de possivel problema com o uso de dependências não passadas como parâmetro:
Passando o navigate como parametro para o useEffect
Acho que vocês conseguem acompanhar o modulo assim.
SPOILER______________________
Como eu acabei de terminar o modulo…
Estou postando as telas do meu codigo…
O que estah marcado em vermelho foi uma mudanca minha para melhoria do código e pode não ser igual ao do professor. Sugiro fazerem igual ao do professor e modificar caso ja esteja tudo funcionando. Não colocarei o print dos styles pois eh so copia-cola e o codigo estah ali em cima:
Vamos por ordem:
SRC
--------> pages
------------------->Home
index.js
SRC
--------> pages
------------------->Repositories
index.js
SRC
--------> App.js
SRC
--------> index.js
SRC
--------> routesApp.js
Bons Estudos a todos!