ReactJS - 在更改单独的类属性时更新组件
ReactJS - updating components when separate class property is changed
在我的项目中,我有一个带有一些反应代码的html文档,例如:
var Test = React.createClass({
getInitialState: function() {
return {storage: this.props.storage};
},
render: function() {
return (
<h2>
{this.state.storage}
</h2>
);
}
});
在另一个类AppMan中,我有一个名为storageLeft
的属性。如果我渲染测试组件,例如:
<Test storage={AppMan.storageLeft}/>
每当 AppMan 类中更改storageLeft
时,更新Test
组件的正确方法是什么?我不确定将其作为组件的属性传递是否是正确的方法。最初,我能想到的就是做一个setInterval,并不断地做this.setState({storage: AppMan.storageLeft});
或类似的事情。有什么更好的主意吗?
通过 props 设置状态是一种反模式。您应该将storageLeft
保存在 AppMan 组件的状态中,然后将该状态作为 prop 传递给测试组件。当您更改组件的状态时,它会自动重新呈现其自身及其子组件(如果需要)。
文档指出:
为了实现交互,我们将可变状态引入 元件。this.state 是组件专用的,可以更改 通过调用 this.setState()。当状态更新时,组件 重新呈现自身。
这样,当您将状态作为 prop 传递时,您的组件将保持同步。
阿普曼.js
<Test storage={this.state.storageLeft} />
测试.js
var Test = React.createClass({
render: function() {
return (
<h2>
{this.props.storage}
</h2>
);
}
});
相关文章:
- Css order属性不't在Jquery设置时更新
- 通过jQuery添加ng样式属性,angular不更新
- 更新属性工作不正常Meteor/MongoDB
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何动态更新输入值属性
- 无法使用编程加载的属性更新范围滑块.js
- 使用Angular Directive用$scope属性更新DOM-只要指令运行(无需等待事件)
- 使用 HTML + Javascript 的多项选择测验:回复:使用数组对象和属性更新分数(帮助分析代码)
- 从新对象的属性更新对象的属性,但前提是新对象上的属性不是未定义的
- 浏览器如何从内部HTML属性更新DOM
- 使用计算属性更新 Ember 模型
- 从 AngularJS 中的服务属性更新$scope
- Ember绑定属性没有更新,尽管控制器属性更新得很好
- HTML5自定义属性更新值
- 数据变量没有从Vue.js中的监视器上的计算属性更新
- 使用ajax和data-*属性更新按钮
- 为什么我不能用Javascript innerHTML属性更新HTML列表项?
- 当数组中的任何项被更改时,如何使Ember计算属性更新
- 属性更新以触发对象的另一个方法
- Vue.js计算属性更新数量