我有问题,在克隆父级被卸载时保留嵌套原始元素的引用。不确定我做错了什么。
有这样结构的页面
<Sortable>
<Collapsible ref='Collapsible-1'>...</Collapsible>
<Collapsible ref='Collapsible-2'>...</Collapsible>
</Sortable>
快速破解/修复以解决这个恼人的问题。这种方式如果已经存在则refs永远不会更新。这很糟糕,但我不知道如何防止这种情况。有人能指出我正确的方向吗?
let registerRef = function(name, item){
if(this.items[name]) return;
this.items[name] = item;
}
<Sortable>
<Collapsible ref={registerRef.bind(this,'Collapsible-1')}>...</Collapsible>
<Collapsible ref={registerRef.bind(this,'Collapsible-2')}>...</Collapsible>
</Sortable>
答案 0 :(得分:0)
我重新考虑了我的解决方案,并改变了它的工作原理。
想要复制整个孩子的内部所有组件,只是为了将其显示为可拖动的阴影,这是个坏主意!这是一项非常重要的任务,它也会对reactjs refs产生意想不到的结果。
我选择了其他解决方案。当我开始排序(拖动)孩子时,我允许用户从列表中取出并移动它(我的意思是我应用display:absolute;以及一些css转换为跟随手指)。然后我在列表中创建div,就像一个dropbox,以指示在onTouchEnd上可拖动项目的位置。这种方式对于性能要好得多,因为我没有复制整个项目DOM树,并且它不会导致子项重复的问题。
解决。