【发布时间】:2018-08-27 13:13:37
【问题描述】:
我试图在 React 中将 props 和函数从父组件传递给子组件。但是,当我尝试在子组件中调用该函数时,我收到错误:“Uncaught TypeError: Cannot read property 'bind' of undefined”。
这表明在父元素中创建的函数没有被子组件访问。我是否遗漏了代码中允许我从子组件引用父组件函数的步骤?
我将状态定义为父组件中的道具,用于子组件中的条件渲染。我还在父组件中定义函数,我试图在我的子组件中调用它。
下面是我的代码:
注意:流程应该是这样的:点击注册按钮>调用SignUpClick函数>渲染“SignUp”组件(基于子组件中概述的条件渲染逻辑)
如果有人点击了登录按钮,同样的流程概念也将适用。
父组件
export default class Parent extends Component{
constructor(props) {
super(props);
this.state = {
SignUpClicked: false,
SignInClicked: false,
};
this.SignUpClick = this.SignUpClick.bind(this);
this.SignInClick = this.SignInClick.bind(this);
}
SignUpClick() {
this.setState({
SignUpClicked: true,
});
}
SignInClick() {
this.setState({
SignInClicked: true,
});
}
render () {
return (
<div>
<Child />
</div>
)
}
}
子组件
export default class Child extends Component {
render () {
if (this.props.SignUpClicked) {
return(
<SignUp />
) } else if (this.props.SignInClicked) {
return (
<SignIn />
)
} else {
return (
<div>
<div>
<Button onClick={this.SignUpClick.bind(this)}> Sign Up </Button>
</div>
<div>
<Button onClick={this.SignInClick.bind(this)}>Sign In</Button>
</div>
</div>
)
}
}
}
【问题讨论】:
-
你需要将它作为道具传递...
-
<Child onSignUp={() => this.signUp()}> -
然后是孩子:
<Button onClick={() => this.props.onSingUp()}> Sign Up </Button>
标签: javascript reactjs dom