javascript - 使用来自对象的嵌套数组值设置状态数组

标签 javascript arrays reactjs

我使用提取 api 数据的存储状态初始化组件状态。 我按对象名称过滤数据数组。然后,这将使用用户通过按钮选择的对象来设置状态。这行得通,所有对象都毫无问题地改变了。我终生无法解决的问题是我想要的是使用与类别关联的嵌套对象数组来设置 setState onClick。因此每个类别对象都有一个嵌套的 subCategory 数组,其中包含许多子类别。

所以一个通用的例子是:

const arr = [
 { name: 'Do', id: 1, sub: [{sub_id: 1, something: 'dog'}, {sub_id: 1, something: 'cat'}] },
 { name: 'Re', id: 2, sub: [{sub_id: 2, something: 'bird'}, {sub_id: 2, something: 'mouse'}] },
 { name: 'Me', id: 3, sub: [{sub_id: 3, something: 'lion'}, {sub_id: 3, something: 'moose'}] }
];
class BrainFart extends Component {
    constructor(props) {
       super(props)
       this.state = { foo: [] }
    }
    handleArray() {
      const stuff = arr.filter(c => c.sub)
      this.setState({foo: stuff})
    }

} 

这不会用嵌套的子数组设置状态... 有什么想法吗? 谢谢

最佳答案

将您的 handleArray 函数更新为:

handleArray() {
    const stuff = arr.filter(c => c.sub);

    this.setState({ foo: [...this.state.foo, ...stuff] });
}

请注意为组件状态的 foo 属性设置新值时的变化。在这种情况下,我们根据以前的数据和新数据 (stuff) 创建一个新数组。

阅读更多关于 how to modify component state 的 React 文档.


当前的问题是将 foo 设置为 foo.push(stuff) 的输出。

The push() method adds one or more elements to the end of an array and returns the new length of the array.

阅读更多关于 push 的信息

关于javascript - 使用来自对象的嵌套数组值设置状态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49159023/

相关文章:

javascript - react +Redux。执行容器和转储组件中定义的所有方法/操作

javascript - openlayers - wms - map 未加载

PHP 常量数组访问

reactjs - 在渲染前设置状态并引用 firestore

java - 双倍十进制字符串

c - 初级 C 程序员 - 在数组条目上使用 for 循环的恼人错误

reactjs - 如何在 React Router v4 中嵌套路由?

javascript - Object.assign 查询

javascript - 修改 Python 的 Pubnub 存在心跳

javascript - 如何使用 Blockchain 的 API 跟踪比特币交易