Как вставить объект в список объектов в React? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть список вложенных объектов:

          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" },
                ]
            },

Как лучше всего это сделать? Пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 01 августа 2020

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});

1 голос
/ 01 августа 2020

Если вы хотите изменить состояние, вы можете использовать оператор распространения ... следующим образом:

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

Я не пробовал это, но вы можете понять идею из этого примера.

...