Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

componente nao renderiza

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import {Switch,Route,BrowserRouter} from'react-router-dom';
import Sobre from'./Sobre';

serviceWorker.unregister();


ReactDOM.render(
    <BrowserRouter>
        <Switch>
            <Route path='/' component={App}/>
            <Route path="/sobre"   component={Sobre}/> 
                {/* <Route path='/livro' exact={true}  component={Livro}> </Route>
            <Route path='/autores' exact={true} component={Autores}> </Route>
            <Route component={NotFound}> </Route>  */}
        </Switch>
    </BrowserRouter>
, document.getElementById('root'))

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
import React from 'react';

const Header = () =>{
    return (
        <nav>
                <div className="nav-wrapper indigo lighten-2">
                    <a href="/" className="brand-logo ml-3">Casa do Código</a>
                    <ul id="nav-mobile" className="right">
                        <li><a href="/autores">Autores</a></li>
                        <li><a href='/livros'>Livros</a></li>
                        <li><a href="/sobre">Sobre</a></li>
                    </ul>
                </div>
            </nav>
    );
}
export default Header;

meu componente sobre nao renderiza, ao clicar no link volta para pagina principal

8 respostas

Fala ai Luan, tudo bem? Olhando os códigos, parecem estar corretos, quando você para o mouse em cima link "Sobre" qual a URL que aparece?

Um detalhe, você precisa usar o Link da react-router-dom para que sua aplicação se comporte como uma SPA, ou seja, não recarregue a página.

Talvez o problema seja o recarregamento da página, eu precisaria dar uma olhada com mais calma no projeto completo, posso ter deixado passar algum detalhe apenas olhando os códigos.

Espero ter ajudado.

fala ae matheus , e exatamente isso que esta acontecendo a pagina recarrega, onde devo usar esse link?

Fala Luan, o componente Link teve ser usado substituindo a tag a, ou seja, em vez da gente criar os link's normais com href que por padrão vão recarregar a página.

A gente troca o a e usa o componente Link da react-router-dom passando uma propriedade to para ele.

Assim por baixo dos panos ele vai usar a History API para realizar a navegação e não irá recarregar a página.

Exemplo:

<a href="/sobre">Sobre</a>

Ficaria com:

import { Link } from 'react-router-dom'

<Link to="/sobre">Sobre</Link>

Espero ter ajudado.

vlw matheus , mas agora nao esta renderizando mesmo.

ReactDOM.render(
    <BrowserRouter>
        <Switch>
            <Route path='/' component={App}/>
            <Route path='/Sobre'component={Sobre}/> 
        </Switch>
    </BrowserRouter>
, document.getElementById('root'))

se eu inverter as ordens aqui o sobre e renderizado , mas ao clicar no link o componente nao e

Fala Luan, adiciona a propriedade exact para suas rotas, ou seja:

ReactDOM.render(
    <BrowserRouter>
        <Switch>
            <Route exact path='/' component={App}/>
            <Route exact path='/Sobre'component={Sobre}/> 
        </Switch>
    </BrowserRouter>
, document.getElementById('root'))

Isso talvez resolva.

Espeor ter ajudado.

solução!

Fala Luan, adiciona a propriedade exact para suas rotas, ou seja:

ReactDOM.render(
    <BrowserRouter>
        <Switch>
            <Route exact path='/' component={App}/>
            <Route exact path='/Sobre'component={Sobre}/> 
        </Switch>
    </BrowserRouter>
, document.getElementById('root'))

Isso talvez resolva.

Espeor ter ajudado.

funcionou matheus, vlw

Magina Luan, sempre que precisar não deixe de criar suas dúvidas.

O exact serve para dar match completa na URL, isso porque sem ele, quando você tentava acessar o /sobre antes dele tinha uma rota raiz com apenas /, sendo assim, como o /sobre tem / ele ia renderizar o App.

Com o exact o match da rota deve ser full, ou seja, /sobre vai procurar uma rota /sobre e não mais inicio dela.

Na novas versões da rect-router essa opção vai vim ativada por padrão se não me engano.

Espero ter ajudado.