我有组件 A 和 B。组件 A 将状态作为props传递给组件,说它名为 show
所以在我的组件 B 的渲染函数中,它会是这样的
{this.props.show &&
<div>popup content</div>
}
但是我现在如何关闭它?我必须将标志从组件 B 传递给父级吗?据我所知,它会做出react,您可以将东西传回给父母。
我有组件 A 和 B。组件 A 将状态作为props传递给组件,说它名为 show
所以在我的组件 B 的渲染函数中,它会是这样的
{this.props.show &&
<div>popup content</div>
}
但是我现在如何关闭它?我必须将标志从组件 B 传递给父级吗?据我所知,它会做出react,您可以将东西传回给父母。
为了将数据从子级传递给父级,父级需要将能够处理该数据的函数传递给子级。
var Parent = React.createClass({
getData: function(data){
this.setState({childData: data});
}
render: function(){
return(
<Child sendData={this.getData} />
);
}
});
var Child = React.createClass({
textChange: function(event){
this.setState({textString: event.target.value});
}
buttonClick: function(){
this.props.sendData(this.state.textString);
}
render: function(){
<div>
<input type="text" value={this.state.textString}
onChange={this.textChange}/>
<button onClick={this.buttonClick}
</div>
}
});
还有其他处理数据的方法,创建数据存储来存储全局变量和处理各种事件可能是值得的。通过这种方式,您可以以一种方式保持应用程序的数据流。然而,在较小规模的情况下,这种解决方案应该足够了。
使用 eventBus 分别从子/父组件发送/接收日期。
下面的例子:
class Date extends Component {
constructor(props) {
super(props);
this.state = {
date:'',
}
this.callback = this.callback.bind(this); // register callback method
}
callback(date){ // callback method to receive data
this.setState({date: date});
}
componentDidMount(){
EventBus.on("date", this.callback);
}
render() {
<div>
{this.state.date}
</div>
}
}
从任何其他组件
handleDayClick(day) {
EventBus.publish("date", day);
}