无法解决打字错误,我检查了控制台日志,Set返回的区域是一个字符串数组,这正是我在状态下对区域类型拥有的字符串。为什么这不起作用?
代码:
const [regions, setRegions] = useState<string[]>([])
useEffect(() => {
if (areasOptions) {
const regions = [[...new Set(areasOptions.areas.map((item: ListObject) => item.region))]]
setRegions(regions) // Error
}
}, [areasOptions])
错误:
类型'(string | undefined)[] []'的参数不可分配给 “ SetStateAction”类型的参数。 [0]键入'(string | undefined)[] []'不能分配给'string []'类型。 [0]类型 不能将'(string | undefined)[]'分配为'string'类型。
答案 0 :(得分:0)
这个没有反应的例子应该对您有用:
function setRegions(abc: string[]) {
}
type ListObject = {
region: string
}
const areasOptions: {areas: ListObject[]} = {
areas: [
{region: "a"},
{region: "b"}
]
}
const regions = [...new Set(areasOptions.areas.map((item) => item.region))]
setRegions(regions)