可以';键';属性(在reactjs中)是否可以用来强制重新安装任何组件?

可以';键';属性(在reactjs中)是否可以用来强制重新安装任何组件?,reactjs,Reactjs,呈现列表时,应向列表的每个元素添加一个键道具。这在文档中被描述为一个“提示”,在这个提示下,子元素在不同的渲染中可能是稳定的。更改键的值将导致卸载和重新装载该元素 这种行为目前也适用于任何组件,即使是不表示列表元素的组件,一些React开发人员建议将其作为一种在必要时强制任何组件重新安装的方式。这种行为超出了文档中所描述的范围,是API的一种可以依赖的稳定功能,还是应该将其视为随时可能更改的实现细节?关键属性旨在区分类似元素。设置一个新的关键点确实会强制重新渲染,但我不确定为什么要采用这种蛮力方

呈现列表时,应向列表的每个元素添加一个
道具。这在文档中被描述为一个“提示”,在这个提示下,子元素在不同的渲染中可能是稳定的。更改
键的值将导致卸载和重新装载该元素


这种行为目前也适用于任何组件,即使是不表示列表元素的组件,一些React开发人员建议将其作为一种在必要时强制任何组件重新安装的方式。这种行为超出了文档中所描述的范围,是API的一种可以依赖的稳定功能,还是应该将其视为随时可能更改的实现细节?

关键属性旨在区分类似元素。设置一个新的关键点确实会强制重新渲染,但我不确定为什么要采用这种蛮力方法。如果不了解您所遇到的具体情况,就很难提供关于这是好主意还是坏主意的信息,但一般来说,这是一个“黑客”实现,它将撤销react在幕后提供的与使用虚拟dom有关的许多好处


一般来说,如果您的代码中有一个点需要强制react重新渲染,而它不是出于自己的意愿,这可能意味着您的代码有一个更根本的问题。这将是一个更深层次问题的创可贴解决方案,即使它是一个相当稳定和可靠的创可贴。

为什么要投反对票?我想问的是,在代码中采用这种模式是否合适,或者它是否依赖于API不稳定的实现细节。假设你的应用程序有关于书籍的信息,当前的url是/book/1。现在用户导航到/book/2,您需要从API获取Book2的数据。您应该在生命周期的什么时候调用API?您可以将API调用放在ComponentWillMount或ComponentDidMount中,但是为了让它们工作,需要卸载Book组件,并在用户更改url时重新装载。这有意义吗?听起来你把API调用放错地方了。