Je viens de commencer avec réaction. J'ai donc généré une nouvelle application de réaction avec Mais j'ai rencontré un problème lorsque j'ai essayé de mettre à jour mon état. Je voulais fondamentalement basculer la propriété code> terminée code> de l'élément de TODO sélectionné. Mais quand j'ai appelé la méthode code> coldos code>, il m'a donné cette erreur: p> index.js: 1 ./src/app.js
Ligne 27: 5: 'Les Setodos' ne sont pas définis no-undef p>
blockQuote> NPX Create-React-APP. Code> et cela m'a généré un ce que je pense est des composants de crochets de réaction fonctionnels. Je suppose que c'est la version 2020.
3 Réponses :
Mettez markcomplete code> dans la même fonction de fonction que
Setodos code>
Setodos code> est uniquement dans la portée de la fonction qu'il est défini dans ce cas le composant
code>. Déplacer
markcomplete code> dans votre composant.
import React, { useState } from 'react'
import Todos from './components/Todos.js'
function App() {
const [todos, setTodos] = useState([
{ id: 1, title: 'First todo item', completed: false },
{ id: 2, title: 'Second todo item', completed: true },
{ id: 3, title: 'Third todo item', completed: false },
]);
function markComplete(event, todo) {
console.log('You clicked todo with id: ' + todo.id + ' and title: ' + todo.title)
setTodos({
id: 1,
title: 'Test',
completed: true,
})
}
return (
<div>
<Todos
todos={todos}
markComplete={ (event, todo) => markComplete(event, todo) }
/>
</div>
)
}
export default App
Vous devez donc mettre la fonction
BRU, j'ai remarqué que vous avez modifié la fonction MarkComplet à une flèche, est-ce une raison particulière de ce changement? Est-ce mieux?
@LIGA, pour réagir des crochets, il n'y a pas de différence, la fonction de flèche se lierait automatiquement (lexical ceci) à l'instance de votre composant de classe et que vous n'avez pas à le lier dans le constructeur. Dans votre cas, vous utilisez des crochets afin qu'il n'y a pas de différence, mais j'utilise généralement une fonction de flèche.