【发布时间】:2018-02-19 22:59:48
【问题描述】:
我想通过布尔状态将 className 从一个组件更改为另一个组件。我试图通过 {this.props.isOpen} 传递它,但它不起作用。如何将状态值传递给另一个组件?
父组件
class Category extends React.Component {
constructor(props) {
super(props);
this.state={ isOpen: false };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({ isOpen : !this.state.isOpen })
}
render() {
const categoryContainer = this.state.isOpen ? "isopen" : "";
return(
<div>
<div className="categoryContainer">
<h3>CATEGORIES</h3>
</div>
<button onClick={this.handleClick}>Click</button>
</div>
<div className={categoryStatus} id="category">
<input className="categoryInput" type="text" value="Add Category" placeholder="Add Category" />
<ul>
<li>Greetings</li>
<li>Main Switchboard</li>
<li>Interjections</li>
</ul>
</div>
<Main isOpen={this.state.isOpen} />
</div>
)}
}
子组件
class Main extends React.Component {
render() {
const botStatus = !this.props.isOpen ? "isopen" : "";
const botInput = !this.props.isOpen ? "isopen" : "";
return (
<div>
<div className={botStatus} id="bot">
<h2>MASTER INTENTS</h2>
<input className={botInput} type="text" value="Add Intent" />
</div>
</div>);
}
}
感谢您提前检查我的问题。
【问题讨论】:
-
我看不到 Category 在哪里消耗 Main。您通常会通过从 Parent 向 Child 传递一个 prop 来做到这一点。
标签: reactjs boolean components