Javascript 此.props.function不是一个函数
我是个新手,无法从子对象设置父对象状态 父组件:Router.jsJavascript 此.props.function不是一个函数,javascript,reactjs,Javascript,Reactjs,我是个新手,无法从子对象设置父对象状态 父组件:Router.js class Router extends Component{ constructor(props){ super(props); this.handler = this.handler.bind(this); this.state = { login: true, } } handler() { co
class Router extends Component{
constructor(props){
super(props);
this.handler = this.handler.bind(this);
this.state = {
login: true,
}
}
handler() {
console.log("hi");
this.setState({
login: true,
});
}
render(){
return(
<div>
<BrowserRouter>
<Route exact path="/" component={ Register }></Route>
...other routes
<Route path="/login" handler={this.handler} component={ Login } />
</div>
);
}
}
export default Router;
类路由器扩展组件{
建造师(道具){
超级(道具);
this.handler=this.handler.bind(this);
此.state={
登录:对,
}
}
handler(){
控制台日志(“hi”);
这是我的国家({
登录:对,
});
}
render(){
返回(
…其他路线
);
}
}
导出默认路由器;
子组件Login.js
class Login extends Component {
...some code to get back end node js data
if(got node data){
this.props.handler();
this.props.history.push('/home');
}
render (){
return (
<div>
<button className="button" onClick = {this.checkUser.bind(this)}>
Login
</button>
<div>
)
}
类登录扩展组件{
…获取后端节点js数据的一些代码
if(获取节点数据){
this.props.handler();
this.props.history.push('/home');
}
渲染(){
返回(
登录
)
}
我一直在说“this.props.handler不是函数”
我的处理程序格式是否错误?我有点困惑
感谢您将
此.handler
传递给路由组件,而不是登录
您有两种选择可以将this.handler
传递到Login
组件
你可以通过
}/>
或者把它藏起来
您正在将此.handler
传递给路由
组件,而不是登录
您有两种选择可以将this.handler
传递到Login
组件
你可以通过
}/>
或者把它藏起来
您是否在登录组件中控制台输出了这个.props?它有处理方法吗?@sunny没有它只有历史、位置和匹配。我想知道为什么它没有手柄,我明白了,修好了!感谢您提供的帮助。您需要将处理程序道具传递给登录组件而不是路由组件。您是否在登录组件中控制台输出了此.props?它有处理方法吗?@sunny没有它只有历史、位置和匹配。我想知道为什么它没有手柄,我明白了,修好了!感谢您提供的帮助,您需要将handler prop传递给登录组件而不是路由组件。明白了!非常感谢你!不客气,詹姆斯。你能把它标记为答案吗?当它起作用时,让别人知道它起作用了吗?明白了!非常感谢你!不客气,詹姆斯。你能将它标记为有效的答案,让其他人知道它有效吗?