javascript – 在子组件的状态之间共享父状态?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在子组件的状态之间共享父状态?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2307字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 在子组件的状态之间共享父状态?](/upload/InfoBanner/zyjiaocheng/734/47b1fe027e8a4dd1824aa9e9e32c1fdd.jpg)
学习React,我正在构建一个简单的计算器.组件模型是:
- Calculator
- Sliders (input[ref=cars])
- Dashboard (p {this.state.cars})
滑块是具有一组输入的组件,应通过父计算器状态传输到仪表板.
我的目标是在幻灯片输入组件更改时使仪表板中的状态值更改.
var Calculator = React.createClass({
getInitialState: function() {
return {
cars: 0
};
},
render: function () {
return (
<div className="calculator">
<Sliders
cars={this.state.cars}
/>
<Dashboard
cars={this.state.cars}
/>
</div>
)
}
});
var Dashboard = React.createClass({
getInitialState:function () {
return {
cars: this.props.cars
}
},
render: function () {
return (
<div>
<h1>Dashboard</h1>
<p>Cars: {this.state.cars}</p>
</div>
)
}
})
var Sliders = React.createClass({
getInitialState: function() {
return {
cars: this.props.cars
};
},
handleInput: function () {
var state = {
cars: this.refs.cars.value
}
this.setState(state);
},
render: function () {
return (
<div className="sliders">
<input type="text" ref="cars" onChange={this.handleInput} value={this.state.cars}/>
</div>
)
}
})
正如我所知,handleInput()被触发,因此设置了Sliders的状态.但是,它并没有“转移”到父计算器的状态为“汽车”.因此,计算器的状态未更新=>仪表板状态也未被更新.
如何在Sliders和Dashboard之间共享Calculator的父状态?
我知道,在SO上有很多类似的问题,但很难找到具体的有用案例,特别是当你在React中完成noob时.所以,抱歉复制.
解决方法:
组件不共享状态.但是,一个组件的状态可以成为另一个组件的支柱.
在您的情况下,汽车应该是计算器的状态,而幻灯片和仪表板应该只检索汽车作为道具.如果输入发生变化,Sliders应通知Calculator有关更改,以便它可以更新其状态并重新呈现(这会导致Sliders和Calculator也更新):
var Calculator = React.createClass({
getInitialState: function() {
return {
cars: 0
};
},
onUpdate: function (cars) {
this.setState({cars});
},
render: function () {
return (
<div className="calculator">
<Sliders
cars={this.state.cars}
onUpdate={this.onUpdate}
/>
<Dashboard
cars={this.state.cars}
/>
</div>
)
}
});
var Dashboard = React.createClass({
render: function () {
return (
<div>
<h1>Dashboard</h1>
<p>Cars: {this.props.cars}</p>
</div>
)
}
})
var Sliders = React.createClass({
handleInput: function (event) {
this.props.onUpdate(event.target.value);
},
render: function () {
return (
<div className="sliders">
<input type="text" ref="cars" onChange={this.handleInput} value={this.props.cars}/>
</div>
)
}
})
尽可能少的组件应该具有状态和状态应该尽可能高的树.另见Props in getInitialState Is an Anti-Pattern
内容总结
以上是互联网集市为您收集整理的javascript – 在子组件的状态之间共享父状态?全部内容,希望文章能够帮你解决javascript – 在子组件的状态之间共享父状态?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。