如何修复类型mutableefobject必须有一个符号.迭代器方法错误



我使用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[]>([])时,你试图将钩子的返回值解构为两个变量valuesetValue。但是你不能解构它,因为它不是一个数组(或可迭代对象)。因此,您得到错误:

类型'MutableRefObject'必须有一个返回迭代器的'symbol.iterator()'方法。

通过.current属性访问ref的值:

const values = valuesRef.current; // is type any[]

您可以通过设置.current属性来更新这些值:

valuesRef.current = [1, 2, 3];

Typescript Playground Link

React Docs: useRef

相关内容

  • 没有找到相关文章

最新更新