javascript - 在输入元素上键入时我的状态没有更新

标签 javascript reactjs forms react-hooks

当我尝试输入输入元素时,状态不会更新。所以我无法在输入中输入任何内容。我也没有收到错误代码。在handleChange函数中,当我将其记录到控制台时,文本变量未定义。但值变量会更新我输入的每个字母。但不是作为一个完整的句子,这些字母只是覆盖了它们自己。

import React, { useState } from "react";

function AddTodo(props) {
  const initialFromState = { text: "", isComplete: null, id: null };
  const [todo, setTodo] = useState(initialFromState);

  const handleSubmit = e => {
    e.preventDefault();
    if (!todo.text) return;
    props.AddTodo(todo);
    setTodo(initialFromState);
    console.log(todo);
  };

  const handleChange = event => {
    const { text, value } = event.target;
    setTodo({ ...todo, [text]: value });
  };

  return (
    <div className="container mx-auto text-center">
      <form onSubmit={handleSubmit} className="rounded flex">
        <input
          className="shadow appearance-none border rounded w-full py-2 mr-4 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
          type="text"
          name="text"
          value={todo.text}
          onChange={handleChange}
          autoComplete="off"
          autoFocus={true}
          placeholder="Eg. Buy apples"
        />
        <button
          type="submit"
          className="bg-blue-500 hover:bg-blue-700 text-white font-bold px-4 rounded focus:outline-none focus:shadow-outline"
        >
          Add
        </button>
      </form>
    </div>
  );
}

export default AddTodo;

我希望我在输入中输入的内容存储在状态中,并且我可以看到我正在输入的内容。下一个挑战是查看待办事项是否确实存储并显示在其他待办事项中。 :)一步一步。

最佳答案

我认为您的 handleChange 中的 prop 名称错误,text 应该是 name:

 const handleChange = event => {
    const { name, value } = event.target;
    setTodo({ ...todo, [name]: value });
  };

关于javascript - 在输入元素上键入时我的状态没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57188971/

相关文章:

javascript - 如何在 Angular 5 的纯管道中使用 HTTP 调用

javascript - 实现搜索栏按钮和文件树组件

javascript - 按计算尺寸订购的试剂组件

c# - 通过 White 访问 DataGridView 单元格

css - 选择框上的背景 "see"填充

javascript - 将二进制补码数转换为其二进制表示

javascript - SVG "circle"元素半径属性 "r"在 Firefox 中不转换但在 Chrome 中很好

Javascript - 处理 3GB 数据进行常规计算

javascript - 不必要的 React.Fragment 性能会很差吗?

python - 表格模板