обновить массив объекта и setState, используя сокращение - PullRequest
0 голосов
/ 06 июня 2018

Пытался переписать мой массив обновлений объекта, используя более короткую версию, но не получилось, у меня есть рабочая версия, которая присваивается временной переменной перед setState.

//working version
const new_items = (this.state.new_items || []).map((o, i) => {
    if(i === idx) {
        return e.target.value
    }
    return o
})
this.setState({
    items: new_items
})

//shorter version but why snytax error?
this.setState({
    items: (this.state.items || []).map((o, i)=> ({
        i === idx ? e.target.value : o
    }))
})

1 Ответ

0 голосов
/ 06 июня 2018

Вам необходимо вернуть e.target.value или o.Таким образом, внутренняя часть вашей функции map представляет собой просто потерянное выражение, которое ни с чем не связано и не будет работать.

Лучше всего было бы неявно вернуть функцию стрелки, удалив{ } с:

this.setState({
  items: (this.state.templates || []).map((o, i) => (
    i === idx ? e.target.value : o
  ))
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...