我使用useRef在组件的生命周期内保持对渲染道具的引用,但我似乎无法通过此类型错误:
Type 'MutableRefObject<any>' must have a 'symbol.iterator()' method that returns an iterator.
我的代码是:
const [values, setValues] = useRef<any[]>([])
最初,我使用一个接口来代替任何,但在故障排除时改为任何,但仍然不能工作。我用空数组作为初始值。我不知道该怎么做,请指教。
useRef
不像useState
那样工作。它不返回值和更新回调。它只是返回一个ref对象(类型MutableRefObject
)。
const valuesRef = useRef<any[]>([]);
当你写const [values, setValues] = useRef<any[]>([])
时,你试图将钩子的返回值解构为两个变量value
和setValue
。但是你不能解构它,因为它不是一个数组(或可迭代对象)。因此,您得到错误:
类型'MutableRefObject'必须有一个返回迭代器的'symbol.iterator()'方法。
通过.current
属性访问ref的值:
const values = valuesRef.current; // is type any[]
您可以通过设置.current
属性来更新这些值:
valuesRef.current = [1, 2, 3];
Typescript Playground Link
React Docs: useRef