Javascript 在输入元素上键入时,我的状态未更新

Javascript 在输入元素上键入时,我的状态未更新,javascript,reactjs,forms,react-hooks,Javascript,Reactjs,Forms,React Hooks,当我尝试键入输入元素时,状态不会更新。所以我无法在输入中键入任何内容。我也没有得到错误代码。在handleChange函数中,当我将文本变量记录到控制台时,它是未定义的。但是value变量会更新我键入的每个字母。但不是作为一个完整的句子,这些字母只是覆盖了它们自己 import React, { useState } from "react"; function AddTodo(props) { const initialFromState = { text: "", isComplete

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

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;

import React,{useState}来自“React”;
函数AddTodo(道具){
const initialFromState={text:,isComplete:null,id:null};
const[todo,setTodo]=useState(initialFromState);
常量handleSubmit=e=>{
e、 预防默认值();
如果(!todo.text)返回;
道具。添加todo(todo);
setTodo(initialFromState);
控制台日志(todo);
};
const handleChange=事件=>{
常量{text,value}=event.target;
setTodo({…todo[text]:value});
};
返回(
添加
);
}
导出默认AddTodo;

我希望输入的内容存储在状态中,并且我可以看到我输入的内容。下一个挑战是查看todo是否在其他todo中实际存储和显示。:)一步一个脚印。

我想你的
手册更改中的道具名称有误,
文本应该是
名称

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

它应该是
名称
,您没有文本属性来定位它

name='text'
给定的属性使用该属性

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

什么是
事件.target.text
?我很确定这将是
未定义的
,因为在
输入上没有
文本
属性。。。我已经坐了很久了。我怎么会错过呢。非常感谢你。但现在我得到了道具。addTodo(todo)不是一个函数:/确保您正在传递该道具,并且在代码中拼写为
props.AddTodo(todo)用大写字母。你说得对。哦,主耶稣:我通过了相同的道具AddTodo,这是这个组件。这是我第一次尝试React应用程序。我想我会后退一步,重新做一遍,以便学得更好。谢谢你的帮助。:)