Массив в React превращается в единицу

170
24 апреля 2018, 02:08

есть форма, в которой два инпута, при изменении каждого из которых меняется state компонента (recipeName, recipeIngredients). Дальше есть кнопка Добавить, которая создаёт объект

let recipe = {
  name: this.state.recipeName,
  ingredients: this.state.recipeIngredients.split(',')
}

и добавляет его в массив рецептов

addRecipe(e) {
        if (this.state.recipeName.length > 0 && this.state.recipeIngredients.length > 0) {
            let recipe = {
                name: this.state.recipeName,
                ingredients: this.state.recipeIngredients
            }
            this.setState({
                recipes: this.state.recipes.push(recipe)
            })
            this.handleClose(); //закрытие модального окна, в котором всё происходит
        } else {
            alert('Fill all inputs!')
        } 
    }

пытаюсь вывести содержимое массива

<ul>
  {this.state.recipes.map(item => <li>item.name</li>)}
</ul>

и на этом этапе массив recipes почему-то равен 1 и выводит ошибку TypeError: this.state.recipes.map is not a function

Answer 1
this.setState({
    recipes: this.state.recipes.push(recipe)
})

push возвращает новую длину массива.

READ ALSO
Как в Putty поменять путь к исполняемому файлу PHP?

Как в Putty поменять путь к исполняемому файлу PHP?

Добрый день! Мой проект находится на удалённом хостинге regru и в самом проекте мне нужно загрузить модуль, я подключилась через ssh к командной...

205
AngularJs загрузить csv используя на бекенде Symfony2 StreamedResponce

AngularJs загрузить csv используя на бекенде Symfony2 StreamedResponce

Я хочу загрузить CSV файл при нажатии на кнопку на странице:

282
Ассоциативный массив fetchAll()

Ассоциативный массив fetchAll()

Имеется функция возвращающая ассоциативный массив:

233