variable validar una saber esta definida reactjs react-router

reactjs - una - validar null o undefined javascript



El prop `history` está marcado como requerido en` Router`, pero su valor es `undefined`. en el enrutador (7)

Soy nuevo en ReactJs. Este es mi código:

var React = require(''react''); var ReactDOM = require(''react-dom''); var {Route, Router, IndexRoute, hashHistory} = require(''react-router''); var Main = require(''Main''); ReactDOM.render( <Router history={hashHistory}> <Route path="/" component={Main}></Route> </Router>, document.getElementById(''app''));

y compilándolo con webpack. También agregué el componente Principal a mis alias. La consola arroja estos errores: También leo estos enlaces:

React Router falló el prop ''historial'', no está definido

¿Cómo resuelvo que el historial esté marcado como obligatorio cuando el valor no está definido?

Actualización de React-Router y reemplazo de hashHistory con browserHistory

y muchas búsquedas en la web, pero no pude solucionar este problema. React Router es la versión 4


¿Qué versión de React Router estás usando? La versión 4 del enrutador cambió de pasar la clase browserHistory a pasar una instancia de browserHistory, consulte el ejemplo de código en los nuevos documentos .

Esto ha atrapado a muchas personas que actualizan automáticamente; un documento de migración saldrá ''cualquier día ahora''.

Desea agregar esto al principio:

import createBrowserHistory from ''history/createBrowserHistory'' const newHistory = createBrowserHistory();

y

<Router history={newHistory}/>


La versión 4 de React Router cambió varias cosas. Crearon elementos de enrutador de nivel superior separados para los diferentes tipos de historial. Si está utilizando la versión 4, debería poder reemplazar <Router history={hashHistory}> con <HashRouter> o <BrowserRouter> .
Para obtener más detalles, consulte https://reacttraining.com/react-router/web/guides


Lo siguiente funciona para mí con "react-router@^3.0.5":

package.json:

"react-dom": "^16.6.0", "react-router": "^3.0.5"

index.js:

import { render } from ''react-dom'' import { App } from ''./components/App'' import { NotFound404 } from ''./components/NotFound404'' import { Router, Route, hashHistory } from ''react-router'' render( <Router history={hashHistory}> <Route path=''/'' component={App} /> <Route path=''*'' component={NotFound404} /> </Router>, document.getElementById(''root'') )


Si desea tener múltiples rutas , puede usar un interruptor como este,

import {Switch} from ''react-router'';

entonces

<BrowserRouter> <Switch> <Route exact path="/" component={TodoComponent} /> <Route path="/about" component={About} /> </Switch> </BrowserRouter>


Si está utilizando react-router v4, también necesita instalar react-router-dom. Después de eso, importe BrowserRouter desde react-router-dom y cambie Router por BrowserRouter. Parece que v4 cambia varias cosas. Además, la documentación de react-router está desactualizada. Este es mi código de trabajo:

import React from ''react''; import ReactDOM from ''react-dom''; import { BrowserRouter, Route } from ''react-router-dom'' import App from ''./components/App''; ReactDOM.render(( <BrowserRouter> <Route path="/" component={App}/> </BrowserRouter> ), document.getElementById(''root'') );

Source


También escribo una práctica de inicio de sesión. Y también cumplir con la misma pregunta como tú. Después de un día de lucha, descubrí que solo this.props.history.push(''/list/'') puede funcionar en lugar de this.props.history.push(''/list/'') muchos complementos. Por cierto, la versión react-router-dom es ^4.2.2 . ¡Gracias!

handleSubmit(e){ e.preventDefault(); this.props.form.validateFieldsAndScroll((err,values)=>{ if(!err){ this.setState({ visible:false }); this.props.form.resetFields(); console.log(values.username); const path = ''/list/''; this.props.history.push(path); } }) }


Tengo el mismo problema en ES6, pero cuando cambié para usar la biblioteca ''react-router-dom'', el problema se resolvió. Para todos los fanáticos de ES6, aquí vamos:

npm install --save react-router-dom

En index.js:

import {HashRouter, Route} from ''react-router-dom''; import App from ''./App''; ReactDOM.render( <HashRouter> <Route path="/" component={App}/> </HashRouter> , document.getElementById(''root'') );