我正在使用React和React路由器。
这是我的第一个组成部分:
import React from 'react';
class SomeClass extends React.Component{
constructor(props){
super(props);
this.state = {
someObj: {
something: "",
someOtherThing: ""
},
authenticated: false
};
}
}
export default SomeClass;
这是我的ProtectedRoute组件:const ProtectedRoute=({auth,component:component,…rest})=
if(auth){
return(<Component {...props} />);
}
if(!auth){
return(<Redirect to={{path: "/", state:{from: props.location}}} />);
}
}} />
);
};
export default ProtectedRoute;
这是我的导航组件:
import React from 'react';
import { BrowserRouter as Router, Switch} from 'react-router-dom';
import ProtectedRoute from './ProtectedRoute';
import SomeClass from './SomeClass';
function Nav(){
return(
<Router>
<Switch>
<ProtectedRoute exact path="/somepage/abc" component={SomeClass} auth={SomeClass.props.authenticated} /> //getting an error here because of SomeClass.props.authenticated
</Switch>
</Router>
);
}
export default Nav;
我的问题:
在我的导航功能组件中,有
当我上课的时候。道具。我得到以下错误:
无法读取未定义的属性已验证
你可以用道具把它传下去
在someClass
中:
<Nav auth = {this.state.authenticated}/>
而Nav
组件应如下所示:
function Nav(props){
return(
<Router>
<Switch>
<ProtectedRoute exact path="/somepage/abc" component={SomeClass} auth={props.auth} />
</Switch>
</Router>
);
}