【发布时间】:2021-03-24 03:45:18
【问题描述】:
我最近阅读了https://reactjs.org/docs/hooks-faq.html,我看到了这个:“除非你在进行延迟初始化,否则请避免在渲染期间设置 refs — 这可能会导致令人惊讶的行为。相反”
我想知道为什么我们应该避免在渲染过程中设置 refs,以及在这个场景中会发生什么错误
其实我在渲染的时候一直设置ref,没有问题
【问题讨论】:
标签: reactjs
我最近阅读了https://reactjs.org/docs/hooks-faq.html,我看到了这个:“除非你在进行延迟初始化,否则请避免在渲染期间设置 refs — 这可能会导致令人惊讶的行为。相反”
我想知道为什么我们应该避免在渲染过程中设置 refs,以及在这个场景中会发生什么错误
其实我在渲染的时候一直设置ref,没有问题
【问题讨论】:
标签: reactjs
我认为您可能将 ref 附加到元素/组件与 ref 的当前值的设置混为一谈。您可以在“render”方法中将 ref 附加到 DOM 元素或其他 React 组件,但您可以随时设置 ref 的当前值。
我认为文档所指的“令人惊讶的行为”是价值突变。 React refs 并不存在于组件生命周期的范围内,即通常认为值“恒定”、稳定和可靠的“书挡”。它们的值可以在渲染周期期间随时更新。
我确实觉得 React 会调出一些导致“令人惊讶的行为”的东西然后没有详细说明它有点奇怪,但希望你能在这里看到可能已经用稳定值实现逻辑的边缘情况请记住使用 ref 并且 ref 值在渲染周期的中间发生变化。这可能是建议它们通常在事件处理程序和效果中修改的原因,其中函数的范围保持包含突变。
【讨论】: