【发布时间】:2018-12-14 07:30:27
【问题描述】:
对 React Js 相当陌生,所以请耐心等待...
我在子组件中使用 onClick 来更改父组件的状态。父状态是一个布尔值,它反过来用于在与单击的元素不同的元素上打开和关闭一个类。像这样的:
在 Parent.js 中(仅相关代码):
constructor(props) {
super(props);
this.state = {
elementOpen: false;
}
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({
elementOpen: !this.state.bucketListOpen
})
}
render() {
return (
<Child
className = {this.state.elementOpen ? "open" : "closed"}
toggleClassName = {this.handleClick}
/>
)
}
在 Child.js 中(仅相关代码):
render() {
return (
<div>
<div className={this.props.className}>Test</div>
<a onClick={this.props.toggleClassName}>Click Me</a>
</div>
)
}
... 这很好用。没问题。当我想将子组件中的 {this.props.toggleClassName} 移动到处理函数中时,就会出现问题(原因是我可以在点击时触发多个事件)。简而言之,它停止工作。
我尝试在 Child 组件中创建一个方法并将 prop 放入方法中,如下所示:
handleClassSwitch() {
return this.props.toggleClassName;
}
render() {
return (
<div>
<div className={this.props.className}>Test</div>
<a onClick={this.handleClassSwitch}>Click Me</a>
</div>
)
}
...但遗憾的是它不起作用,我很难过。可能真的很明显,但我在这里挣扎。任何帮助表示赞赏。
【问题讨论】:
标签: javascript reactjs state eventhandler react-props