首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按特定索引更新数组对象

按特定索引更新数组对象
EN

Stack Overflow用户
提问于 2017-07-06 23:24:28
回答 1查看 101关注 0票数 0

如何更新toggleGroceryCompleteness方法中的groceries项(将completed设置为True)?

我试过this.setState({groceries[groceryIndex]:{completed:true});

代码语言:javascript
运行
复制
   constructor(props) {
    super(props);
    this.state = {
      groceries: [
        {
          name: "Apples",
          completed: false
        }
      ],
      newGroceryName: ""
    };

  toggleGroceryCompleteness(groceryIndex) {
    console.log(groceryIndex);
    console.log(this.state.groceries[groceryIndex]);
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 23:32:51

由于您正在编辑以前设置的状态的值,因此您应该使用setState的以下定义

代码语言:javascript
运行
复制
this.setState((prevState, props) => {
    const newGroceries = prevState.groceries.slice()
    newGroceries[groceryIndex].completed = true

    return { ...prevState, groceries: newGroceries }
})

这将从setState调用之前获取groceries状态数组的值,并将其分配给要修改的新变量,从而访问给定的索引并将completed属性设置为true。然后返回一个新的对象/状态,其中包含以前状态值中的所有内容,但修改后的groceries属性是新的修改后的版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44953104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档