Javascript 此.props.function不是一个函数

Javascript 此.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

我是个新手,无法从子对象设置父对象状态

父组件:Router.js

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传递给登录组件而不是路由组件。明白了!非常感谢你!不客气,詹姆斯。你能把它标记为答案吗?当它起作用时,让别人知道它起作用了吗?明白了!非常感谢你!不客气,詹姆斯。你能将它标记为有效的答案,让其他人知道它有效吗?