【发布时间】:2020-09-06 22:16:37
【问题描述】:
今天使用 react 的 ref 可能有点令人困惑。 回到类组件的时代,在文档中已经很清楚了。
我们应该主要将 refs 用于 DOM 元素:
https://reactjs.org/docs/refs-and-the-dom.html
但是今天我们将钩子与功能组件结合在一起。
我们正在使用useRef钩子。
另外,这给我们带来了新的模式。使用 ref 来包含 callbacks,或任何我们想要保留(某种状态)但不需要重新渲染的 data。 它是一个强大的 API,也出现在文档中:
https://reactjs.org/docs/hooks-faq.html#is-there-something-like-instance-variables
所以现在 ref 可以用于:
存储可变数据
一种记忆
但是这些文档相互矛盾。并在开发团队中造成许多错误和冲突。
文档说了两件事,这是一个问题。
那么,在这种情况下,“正确”的做法是什么?
const MyComponent = (props) => {
const [myMap1, _] = useState(new Map()); // 1.
const myMap2 = useMemo(()=> new Map(), []); // 2.
const myMap3 = useRef(new Map()); // 3.
...
};
【问题讨论】:
标签: javascript reactjs react-hooks memoization