Reactjs从道具改变状态
Reactjs changing states from props?
在我的主Duck
组件中,我有一个状态power: off
。我希望能够通过单击可见的off
字符串将power
切换到on
,该字符串封装在我的main中的组件Lucas
中。
在/**/
标签中,我想修改道具,然后修改power
的状态。我知道下面的代码不应该工作。但希望它能让我清楚地知道我到底在努力实现什么。
var Lucas = React.createClass({
/*
controller:function(){
this.setProps({power: 'on'});
},
*/
render: function(){
return (<div><p onClick={this.controller}>{this.props.power}</p></div>);
}
});
var Duck = React.createClass({
getInitialState:function(){
return {power: 'off'}
},
render:function(){
return (<div>
<Lucas power={this.state.power}/>
</div>);
}
});
包含在JSFiddle上https://jsfiddle.net/mfsc3mkx/
您必须在Lucas
中创建一个方法来更改其state
,在本例中为power
值,并将其传递给Lucas
。
像这样的
var Lucas = React.createClass({
render: function(){
return (<div><p onClick={this.props.turnOn}>{this.props.power}</p></div>);
}
});
var Duck = React.createClass({
getInitialState:function(){
return {power: 'off'}
},
turnOn: function(){
this.setState({power : 'on'})
},
render:function(){
return (<div>
<Lucas power={this.state.power} turnOn={this.turnOn}/>
</div>);
}
})
jsfiddle
在Lucas
组件中,您应该设置onClick
prop:
var Lucas = React.createClass({
handleClick: function() {
this.props.onClick(this.props.power);
},
render: function(){
return (
<div><p onClick={this.handleClick.bind(this)}>{this.props.power}</p></div>
);
}
});
接下来,在Duck
组件中,您需要定义onLucasClick
回调,并将其提供给Lucas
onClick
prop:
var Duck = React.createClass({
getInitialState:function() {
return {
power: 'off'
};
},
handleLucasClick(power) {
this.setState({
power: power === 'on' ? 'off' : 'on'
});
}
render:function() {
return (
<div>
<Lucas power={this.state.power} onClick={this.handleLucasClick.bind(this)} />
</div>
);
}
});
相关文章:
- 表示改变状态的函数的Redux字
- 当道具函数改变状态时,我该如何使用redux
- ReactJS:如何在改变状态后立即更新组件
- 在不改变状态的情况下,根据减少器中的给定索引更改嵌套数组值
- React-道具改变时改变状态
- 在材质设计和angularjs中不动态改变状态的复选框
- React不会立即改变状态
- react.js在改变状态数组后不更新DOM
- 改变状态时URL不更新
- ui.路由器改变状态,但ui-view不显示任何东西
- 如何改变状态的所有复选框(在所有页面),当点击selectAll复选框[使用jQuery数据表]
- ui -路由器在使用$state.go()时不改变状态
- componentDidMount中的setState不会改变状态
- AJAX调用不工作在React一旦我改变状态
- 如何在angular js中应用加载器/旋转器来改变状态
- 背面的离子嵌套状态不会改变状态
- Vuex在分派动作时改变状态中的2个元素
- 不能用Cordova改变状态栏
- 为什么点击一个改变状态且与ajax调用无关的选项卡会创建ajax调用?
- CSS活动伪类改变状态吞噬onclick事件