繁体   English   中英

在 Reactnative 中首次渲染时,如何使用 useState 放置数组 object 的值?

[英]How can I put the value of the array object using useState when rendering for the first time in Reactnative?

我有一个名为 targetFarm 的 object 数组,当我运行 map function 时,值是这样的。

targetFarm.children.map((item) => item.children.map((v) => console.log("v:", v)));

v = {
    name: "coffee"
}

v = {
    name: "tea"
}

v= {
    name: "icecream"
}

我想要做的是使用 box 常量中的 useState 将此 v.name 的值放入数组形式中。 如下

box = [
    "coffee",
    "tea",
    "icecream",
]

但是当我使用我的代码时会弹出此错误。

“无法读取未定义的属性‘推送’”

const [box, setBox] = useState(

    targetFarm.children.map((item) => {
        item.children.map((v) => {
            box.push(v.name)
        })
    })
)

那么我该如何修复我的代码?

我想要做的是使用 box 常量中的 useState 将此 v.name 的值放在数组形式中

您可以使用mapflatMap如下

targetFarm.children.flatMap((item) => item.children.map((v) => v.name);

“无法读取未定义的属性‘推送’”

从您的代码中, box尚未初始化,因此undefined没有push方法。 这就是它抛出该错误的原因。

如果要为box分配默认的 state 值,可以查看以下示例。

const [box, setBox] = useState(
    targetFarm.children.flatMap((item) => 
        item.children.map((v) => v.name)
    )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM