Я следую базовому руководству YouTube и, следуя его инструкциям, получаю сообщение об ошибке:

'TypeError: недопустимая попытка распространения не повторяемого экземпляра. Чтобы быть итерируемыми, объекты, не являющиеся массивами, должны иметь метод Symbol.iterator. '

Я проверил несколько вопросов и ответов, но до сих пор не могу понять, почему это не работает, или альтернативное решение.

export default function App() {

const [task, setTask] = useState();
const [taskItems, setTaskItems] = useState([]);

const handleAddTask = () => {
setTaskItems([...setTaskItems, task])
// console.log(task)
setTask(null)
}

return (
<View style={styles.container}>
  <View style={styles.tasksWrapper}>
    <Text style={styles.sectionTitle}>Today's Tasks</Text>
  

  <View style={styles.items}>
    {
      taskItems.map((item, index) => {
        return (
          <TouchableOpacity key={index}  onPress={() => handleAddTask(index)}>
            <Task text={item} /> 
          </TouchableOpacity>
        )
      })
    }
  </View>
  </View>

  <KeyboardAvoidingView 
    behavior={Platform.OS === "ios" ? "padding" : "height"}
    style={styles.writeTaskWrapper}
    >
      <TextInput style={styles.input} placeholder={'Write a task here'} value={task} onChangeText={text => setTask(text)} />
      <TouchableOpacity onPress={() => handleAddTask()} >
        <View style={styles.addWrapper}>
          <Text style={styles.addText}>+</Text>
        </View>
      </TouchableOpacity>
    </KeyboardAvoidingView>
</View>
);}

Код, с которым я получаю сообщение об ошибке,

setTaskItems([...setTaskItems, task])

Любая помощь могла бы быть полезна! Благодарность

0
Frankinstyyn 21 Сен 2021 в 23:27

2 ответа

Лучший ответ

Вы не можете распространять функцию, а setTaskItems - это функция, которая устанавливает состояние taskItems. Попробуй сделать

setTaskItems([...taskItems, task]) 

Что я думаю, это то, что вы хотите выполнить, чтобы добавить задачу в существующий массив taskItems.

1
jean182 21 Сен 2021 в 20:33
setTaskItems([...taskItems, task])
1
Clem 21 Сен 2021 в 20:30