1
resposta

Passar parametro msg para o component Login

Não ficou claro como após o erro na tentativa de Login passar o parametro msg para o componente de Login para que o mesmo seja exibido, devido a mudança do V3 para V4 pesquisei varias implementações, mas nenhuma está muito clara, dando a sensação de que estou copiando e colando algo mas não entendendo qual a mudança real no mecanismo.

function verificaAutenticacao(nextState, replace) {

if (localStorage.getItem('auth-token') === null) {

    return <Redirect to={{pathname:'/'}}/>;
} 

}

ReactDOM.render( (

{/* React Router V3 /} {/ /} {/ React Router V4 */}
) , document.getElementById('root')); `
1 resposta

Fala ai Cloter, tudo bem? Isso tem várias maneiras para ser feito, vou te dizer uma delas:

Se você está usando a V4 do React Router, acredito que tenha criado um history objeto para passá-lo ao componente Router, algo assim:

import { Router } from 'react-router'
import 'history' from 'history'

const history = createBrowserHistory()

const Routes = () => (
    <Router history={history}>
        // suas rotas...
    </Router>
)

export { history }
export default Routes

Agora, dentro do seu if você pode usar o próprio history para fazer o redirecionamento:

import { history } from './routes'

if (localStorage.getItem('auth-token') === null) {
    history.push(`/path-para-sua-rota?msg=${SUA_MENSAGEM}`)
} 

Depois, lá no seu componente, você pode pegar esse queryParam com uma lib: query-string.

Espero ter ajudado.