Javascript 复选框单击工作2次

Javascript 复选框单击工作2次,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我试着在演示视频上展示一切 沙箱: 演示:它可以帮助您 1) 要更新状态时,请使用此方法 const toggleHandler = (id: number) => { const newObject = todos.map(x => { if (x.id === id) { x.completed = !x.completed; } return x; }); setTodos(newObject);

我试着在演示视频上展示一切

沙箱:

演示:

它可以帮助您 1) 要更新状态时,请使用此方法

const toggleHandler = (id: number) => {
    const newObject = todos.map(x => {
      if (x.id === id) {
        x.completed = !x.completed;
      }
      return x;
    });
    setTodos(newObject);
  };

2) 卸载组件时,不要忘记清除存储

 useEffect(() => {
    const saved = JSON.parse(localStorage.getItem("todos") || "[]") as ITodo[];
    setTodos(saved);

    return () => {
      localStorage.removeItem("todos");
    };
  }, []);
这对你有帮助 1) 要更新状态时,请使用此方法

const toggleHandler = (id: number) => {
    const newObject = todos.map(x => {
      if (x.id === id) {
        x.completed = !x.completed;
      }
      return x;
    });
    setTodos(newObject);
  };

2) 卸载组件时,不要忘记清除存储

 useEffect(() => {
    const saved = JSON.parse(localStorage.getItem("todos") || "[]") as ITodo[];
    setTodos(saved);

    return () => {
      localStorage.removeItem("todos");
    };
  }, []);

()=>onToggle(todo.id)谢谢,但它没有帮助。所有与问题相关的代码都必须包含在堆栈溢出中,而不仅仅是外部站点上。您可以使用在堆栈溢出上生成可运行的代码段。是的。加文所说的应该有帮助。但是您应该在这里输出代码,并向我们展示。(=>onToggle(todo.id)谢谢,但它没有帮助。所有与问题相关的代码都必须包含在堆栈溢出上,而不仅仅是外部站点上。您可以使用在堆栈溢出上生成可运行的代码段。是的。加文所说的应该有帮助。但是您应该在这里输出代码并向我们展示。