如何在React中改变另一个对象的状态
How to change state of another object in React
大家好。你能告诉我如何从另一个对象上访问对象单击动作的某些对象的更改状态吗?
我有元素计算器,它有一组按钮和一个指示器。我想在某个按钮被点击时改变指示器的状态。例如,如果单击任何按钮,则增加指示值;
<style>
#calculator table {
padding: 5px;;
border: ridge 3px;
}
#calculator table tr td {
text-align: center;
}
.nav-button, .nav-button button {
width: 100%;
}
.calc-indicator {
margin-bottom: 10px;
margin-top: 5px;
width: 100%;
}
.calc-indicator input {
border: solid 1px;
border-radius: 5px;
width: 93%;
padding: 4px;
text-align: right;
}
</style>
var Indicator = React.createClass({
getInitialState: function () {
return {
value: 0
}
},
render: function () {
return (
<div className="calc-indicator">
<input type="text" value={this.state.value}/>
</div>);
}
});
var Button = React.createClass({
buttonClicked: function () {
// here I wanna update Indicators state and render Indicator
},
render: function () {
return (
<div className="nav-button" id={this.props.digit}
onClick={this.buttonClicked.bind(this, "nav-button")}>
<button>{this.props.digit}</button>
</div>
);
}
});
var Calculator = React.createClass({
render: function () {
return (
<div id="calculator">
<table>
<tr>
<td colSpan="4">
<Indicator />
</td>
</tr>
<tr>
<td>
<Button digit="MC"/>
</td>
<td>
<Button digit="MR"/>
</td>
<td>
<Button digit="M+"/>
</td>
<td>
<Button digit="M"/>
</td>
</tr>
<tr>
<td>
<Button digit="BS"/>
</td>
<td>
<Button digit="CL"/>
</td>
<td>
<Button digit="C"/>
</td>
<td>
<Button digit="/"/>
</td>
</tr>
<tr>
<td>
<Button digit="7"/>
</td>
<td>
<Button digit="8"/>
</td>
<td>
<Button digit="9"/>
</td>
<td>
<Button digit="*"/>
</td>
</tr>
<tr>
<td>
<Button digit="4"/>
</td>
<td>
<Button digit="5"/>
</td>
<td>
<Button digit="6"/>
</td>
<td>
<Button digit="-"/>
</td>
</tr>
<tr>
<td>
<Button digit="1"/>
</td>
<td>
<Button digit="2"/>
</td>
<td>
<Button digit="3"/>
</td>
<td>
<Button digit="+"/>
</td>
</tr>
<tr>
<td colSpan="2">
<Button digit="0"/>
</td>
<td>
<Button digit="."/>
</td>
<td>
<Button digit="="/>
</td>
</tr>
</table>
</div>
);
}
});
React.render(<Calculator />, document.body);
如果你知道如何使代码更好,请发布你的变体。感谢您的宝贵时间。
将状态从指示器移动到计算器。在按钮类中触发this.props.add,它位于计算器中。所以你有一个家长(计算器)和2个孩子(按钮,指示器)。
将状态发送给子节点
<Button add={this.add} /> and <Indicator value={this.state.value} />
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- 如何使用jQuery添加另一个对象的高度作为边距
- 计算从一个对象到另一个对象的路径并沿其移动
- 如何将一个对象添加到每个对象数组中
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 从 javascript 中的对象方法返回一个对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- js:如何制作一个循环,将20个不同的东西添加到一个对象中
- 如何在React中改变另一个对象的状态