0

我有嵌套对象列表:

          this.state = {
              
           lst: [
            {
                id: "TKT4321",
                subject: "abc",
                reply: [
                    { id: "TKT34343", subject: "axyz" },
                ]
            },
            {
                id: "TKT34341",
                subject: "aaaaa",
                reply: [
                    { id: "TKT322", subject: "abfjf" },
                ]
            },                
        ],            
    }

我想将对象附加到回复属性。例如

           {
                id: "TKT34341",
                subject: "aaaaa",
                reply: [
                    { id: "TKT322", subject: "abfjf" },
                    { id: "TK2222", subject: "jkjk" },
                ]
            },

最好的方法是什么?请帮我 。

4

2 回答 2

1

如果要更改状态,可以...像这样使用扩展运算符:

this.setState((prevState) => {
  const { lst } = prevState
  return lst.map((elem) => ({
     ...elem,
     reply: [ ...elem.reply, { id: "TK2222", subject: "jkjk" } ]
  }))
})

我还没有尝试过,但你可以从这个例子中得到想法。

于 2020-08-01T19:43:15.780 回答
1

Ciao,这里的工作示例:

let lst = [
            {
                id: "TKT4321",
                subject: "abc",
                reply: [
                    { id: "TKT34343", subject: "axyz" },
                ]
            },
            {
                id: "TKT34341",
                subject: "aaaaa",
                reply: [
                    { id: "TKT322", subject: "abfjf" },
                ]
            },                
        ];
        
        let result = lst.map(el => {
           if (el.id === "TKT34341"){
               el.reply.push({ id: "TK2222", subject: "jkjk" });
           }
           return el;
        });
        
        console.log(result);
        
  

然后,如果您想存储result到状态中,只需调用this.setState({lst : result});

于 2020-08-01T19:43:27.340 回答