react.js在改变状态数组后不更新DOM
react.js does not update DOM after having changed state array
我试图在react中实现一个游戏,我在父类的初始状态中将棋盘作为二维数组。通过迭代该数组来呈现tile。我把这些子函数作为道具传递给它们,这样它们就可以改变状态数组。
现在,当我使用该函数更改数组时,HTML不会更新。当我调用setState时,数组得到更新,但它从不渲染。我尝试了this.forceUpdate(),但仍然没有运气。然后我所做的是通过函数将子函数传递给父函数来更新子函数的状态,这是可行的,但我需要父函数递归地调用自己来更新棋盘。我觉得我可能碰到了一个反模式。我怎么能改变我的代码,以便DOM更新,请?
有部分缺失,但这些都是相关的组件。statusBoard是解决方案的内部版本。
当你把props和state链接在一起时,你必须创建一个componentWillReceiveProps函数,如下所示:
componentWillReceiveProps: function(nextProps) {
this.setState({
positionX: nextProps.columnPosition,
positionY: nextProps.rowPosition
});
}
当游戏状态改变并将其作为道具传递给Field时,Field自己的内部状态在那时不会更新,因为它依赖于自己的状态。这是一个反模式,你应该避免Field必须有任何状态,只依赖于它的props,它被传递,并有一个父组件来处理一切的状态。
https://facebook.github.io/react/tips/props-in-getInitialState-as-anti-pattern.html相关文章:
- 从angularjs中的javascript更新dom
- Javascript没有't更新DOM,直到用户交互
- 如何让React JS点击处理程序在执行时更新DOM
- Ionic:AngularJS变量未使用$scope更新DOM
- 使用Javascript通过ajax回调更新DOM
- Angular JS根据搜索结果和点击事件更新DOM元素
- 我如何告诉javascript立即更新DOM
- 引导复选框-x 选中时未正确更新 DOM - 如何验证表单
- 通过Javascript重复更新DOM后,网页变得很慢
- jQuery更新DOM并运行change()方法
- 使用Angular Directive用$scope属性更新DOM-只要指令运行(无需等待事件)
- AngularJS:在长时间循环期间强制更新DOM(即进度指示器)
- Polymer:当数组中的对象被外部代码修改时,更新dom重复元素
- Javascript 复杂的附加和更新 DOM,因此可以使用 remove(); 将其删除
- ng-show 不更新 DOM 元素
- 浏览器如何从内部HTML属性更新DOM
- 更新 DOM 中的标签
- 是否有模板引擎可以在数据更改时更新 DOM
- 在 AngularJS 中使用从 websockets 动态获取的外部 JSON 数据自动更新 DOM
- 更新 DOM 后“鼠标向上”出现问题