这是一个快速的问题:子键必须唯一的范围是多少?这只是父组件还是整个应用程序?
如果后者为真,是否意味着 react diff 算法会在元素跨父组件移动时保留它?
这是一个快速的问题:子键必须唯一的范围是多少?这只是父组件还是整个应用程序?
如果后者为真,是否意味着 react diff 算法会在元素跨父组件移动时保留它?
是的,看起来像……如果你重新设置它的父级,它会给出不同的 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);
}
因此,最好不要在视图组件本身中存储状态,因为它可能会自行重置。上面的小提琴只是一个演示来证明一个观点。
其他相关链接: 使用键识别 React.js 中的嵌套组件
我确实希望 React 有一些东西可以考虑超出同一级别的作用域/嵌套关键状态,但我想再次卸载/重新安装的性能应该不会太有害。