[英]Access Parent Class Method from Child in ReactJS
我有一个父母班和孩子班的小问题。 我想修改在父类中初始化的状态,以便可以在父类中看到更新后的状态。 这是代码:
var Parent = React.createClass({
getInitialState: function(){
return{
my_value: 0
}
},
_increaseValue: function(){
this.state.my_value++;
},
render: function(){
return(
<div><Child /></div>
)
}
});
var Child = React.createClass({
render: function(){
//at button I want to access _increaseValue function of parent
return (
<div>
<button onClick={_increaseValue}>Increase</button>
</div>
);
}
});
现在,当用户单击子类中的按钮时,我想在父类中获取更新的my_value
,因此我的问题是:
可能吗?
对的,这是可能的
如果是,如何完成?
你可以通过传递父类的方法,以儿童props
,像这样
var Parent = React.createClass({ getInitialState: function(){ return { my_value: 0 } }, onChangeValue: function () { var value = this.state.my_value + 1; this.setState({ my_value: value }) }, render: function() { return <div> <Child onChangeValue={ this.onChangeValue } value={ this.state.my_value } /> </div>; } }); var Child = React.createClass({ _handleClick: function(){ this.props.onChangeValue(); }, render: function(){ return <div> <h1> { this.props.value } </h1> <button onClick={ this._handleClick }>Increase</button> </div> } });
这是好习惯吗?
这是一个好习惯
您需要通过道具将功能传递给子组件。 当您需要更改时,可以调用此函数。 这是正常的实践和反应方式。
例:
var Parent = React.createClass({
getInitialState: function(){
return{
my_value: 0
}
},
onChildClick: function() {
this.setState({
my_value: this.state.my_value + 1
})
},
render: function(){
return(
<div>
{this.state.my_value}
<Child onClick={this.onChildClick.bind(this)}/>
</div>
)
}
});
var Child = React.createClass({
_handleClick: function(){
this.props.onClick();
},
render: function(){
return (
<div>
<button onClick={this._handleClick}>Increase</button>
</div>
);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.