【发布时间】:2015-10-30 05:00:11
【问题描述】:
这是一个快速的问题:子键必须唯一的范围是什么?这只是父组件还是整个应用程序?
如果后者为真,是否意味着 react diff 算法会在元素跨父组件移动时保留元素?
【问题讨论】:
-
在兄弟姐妹中必须是唯一的。
标签: javascript reactjs
这是一个快速的问题:子键必须唯一的范围是什么?这只是父组件还是整个应用程序?
如果后者为真,是否意味着 react diff 算法会在元素跨父组件移动时保留元素?
【问题讨论】:
标签: javascript reactjs
是的,看起来像...如果你重新设置它,它会给出不同的 reactid(例如http://webcloud.se/react-sortable/nested.html)
并将再次卸载/重新安装。 ...
http://jsfiddle.net/46x0j6uq/1/
,componentWillUnmount: function() {
//console.log("unmounted:", this.props);
clearInterval(this.state.intervalId);
clearTimeout(this.state.timeoutId);
}
,componentDidMount: function(){
// console.log("mounted:", this.props);
this.state.intervalId = setInterval(this.incrementCount, 1000);
this.state.timeoutId = setTimeout(this.setColorToBlack, 300);
}
因此,最好不要将状态存储在视图组件本身中,因为它可能会自行重置。上面的提琴只是一个演示来证明一个观点。
其他相关链接: Using keys to identify nested components in React.js
我确实希望 React 可以考虑超出同一级别的范围/嵌套键状态,但我想再次卸载/重新安装的性能应该不会太有害。
【讨论】: