Je suis un didacticiel YouTube de base et je reçois une erreur :

'TypeError : tentative non valide de propagation d'une instance non itérable. Pour être itérables, les objets non-tableau doivent avoir une méthode Symbol.iterator.'

J'ai vérifié plusieurs questions et réponses, mais je n'arrive toujours pas à comprendre pourquoi cela ne fonctionne pas ou une solution alternative.

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

Le code avec lequel je reçois l'erreur est

setTaskItems([...setTaskItems, task])

Toute aide sera grandement appréciée! Merci

0
Frankinstyyn 21 sept. 2021 à 23:27

2 réponses

Meilleure réponse

Vous ne pouvez pas diffuser une fonction et setTaskItems est une fonction qui définit l'état de taskItems. Essayez de faire

setTaskItems([...taskItems, task]) 

Ce que je pense est ce que vous voulez accomplir, pour ajouter la tâche dans le tableau taskItems existant.

1
jean182 21 sept. 2021 à 20:33
setTaskItems([...taskItems, task])
1
Clem 21 sept. 2021 à 20:30