为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2021-08-20 18:02:36
当我尝试输入输入元素时,状态不会更新。所以我无法在输入中输入任何内容。我也没有收到错误代码。在 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;我希望我在输入中输入的内容存储在状态中,并且我可以看到我正在输入的内容。下一个挑战是查看待办事项是否实际存储并显示在其他待办事项中。:) 一步到位。
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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


 const handleChange = event => {

    const { name, value } = event.target;

    setTodo({ ...todo, [name]: value });

  };


查看完整回答
反对 回复 2021-08-20
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

它应该是name,你没有文本属性来定位它。


name='text' 属性给定使用。


    const { name, value } = event.target;

    setTodo({ ...todo, [name]: value });


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信