首页 > 解决方案 > 通过自分配键防止组件重用?

问题描述

我有许多接收文档道具的小型 React 编辑器组件。我不希望它们被重复使用,所以我为它们添加了一个密钥:

<Editor key={doc1.id} doc={doc1}/>

我很想从组件类内部的 doc.id 自动派生密钥。这可能吗?

我的目标是我有一个更清洁:

<Editor doc={doc1}/>

标签: javascriptreactjs

解决方案


键是一种特殊机制,用于使组件的身份无效(文档明确提到身份问题键正在解决):如果反应树中的反应元素仅在两次渲染传递之间的键不同,则其底层组件将被卸载并重新安装。键主要用于渲染列表或强制卸载/安装特定组件。所以你的问题的答案是否定的

如果没有任何变化,React 已经尝试重用大量 dom 状态,并且有可用的 lyfecycle 方法来防止不需要的重新渲染:shouldComponentUpdate。但是,正如文档所述,使用此生命周期应被视为性能优化,并且在未来将被视为提示而不是指令。除非存在特定的性能问题,否则这可能是过早的优化 IMO。


推荐阅读