Итак, я видел, что в вашем onEditSubmit
вы делаете это:
ingredients[editingIndex] = ingredientValEdit; // line 57
Ваши компоненты в состоянии на самом деле являются массивом массивов (многомерных).
Это так:
ingredients:[
["Pumpkin Puree ", "Sweetened Condensed Milk ", "Eggs ", "Pumpkin Pie Spice ", "Pie Crust "],
["Noodles ", "Tomato Sauce ", "(Optional) Meatballs "],
["Onion ", "Pie Crust "]
],
Но после этой строки кода ваш массив становится примерно таким:
Я ввел «Куриный леденец» в качестве ингредиента, например.
ingredients:[
"Chicken Lollipop",
["Noodles ", "Tomato Sauce ", "(Optional) Meatballs "],
["Onion ", "Pie Crust "]
],
Итак, значение по индексу, который был выбран, становится строкой, а не массивом.
В этом случае значение индекса 0 теперь является строкой.
Таким образом, ваша функция рендеринга в Item.js
прерывается, так как она пытается отобразить строку, которую она не может.
Чтобы исправить это, вы можете изменить строку 57 на эту:
ingredients[editingIndex] = [ingredientValEdit];
Теперь каждая запись будет правильно храниться в виде массива, и ваш код должен работать.
Обновленный массив будет выглядеть так:
ingredients:[
["Chicken Lollipop"],
["Noodles ", "Tomato Sauce ", "(Optional) Meatballs "],
["Onion ", "Pie Crust "]
]
Дополнительный контент (не требуется для этого ответа):
Однако, поскольку вам всегда нужно, чтобы ингредиенты были массивом, вы также можете разделить входные значения, используя разделитель, например:
Пользователь ввел ингредиенты как: «Леденец, конфета, что-то»
В вашей строке 57 вы также можете сделать это:
ingredients[editingIndex] = ingredientValEdit.split(',');