0
votes

GET SSTATE n'est pas défini d'erreur non non définie à l'aide de crochets de réaction

Je viens de commencer avec réaction. J'ai donc généré une nouvelle application de réaction avec NPX Create-React-APP. 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.

Mais j'ai rencontré un problème lorsque j'ai essayé de mettre à jour mon état. Je voulais fondamentalement basculer la propriété terminée de l'élément de TODO sélectionné. Mais quand j'ai appelé la méthode coldos , il m'a donné cette erreur:

index.js: 1 ./src/app.js Ligne 27: 5: 'Les Setodos' ne sont pas définis no-undef xxx


0 commentaires

3 Réponses :


2
votes

Mettez markcomplete dans la même fonction de fonction que Setodos xxx


0 commentaires

3
votes

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


0 commentaires

0
votes

état

  • Utilisation de l'état seulement à l'intérieur d'un composant.
  • état change une valeur à l'intérieur d'un composant.

    Vous devez donc mettre la fonction markcommete à l'intérieur de votre composant app . xxx


2 commentaires

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.