如何在React的输入字段中输入现有值以进行编辑

克里斯

我有一个带有标题和描述的现有任务,并且我想导航到一个编辑表单。默认情况下,我希望现有的标题和描述值使用React来填充输入。我要询问的这段代码的重要部分是value={task.title}请忽略如何提取数据(我是React的新手,正在尝试)。onChange和onSubmit句柄可以正常工作,但是该错误显然表明我做错了,并且确实会导致偶尔的错误。

我也尝试将这些值抽象为某种formValues状态,但是无论如何输入这些值,如果value={howeverIDoIt}直接操作都会得到错误。

import React, { useEffect, useState } from 'react';
import { HEADERS, TODO_URL } from '../urls';
import { useHistory, useParams } from 'react-router-dom';

const TaskEdit = () => {
    const [task, setTask] = useState({});
    const { id } = useParams();
    const history = useHistory();

    useEffect(() => {
        fetch(`${TODO_URL}/api/tasks/${id}/`, {headers: HEADERS})
          .then(response => response.json())
          .then(responseJson => {
              setTask(responseJson);
          });
    }, []);

    const handleChange = (e) => {
        setTask(e.target.value)
    }

    const handleSubmit = (e) => {
        e.preventDefault();
        const body = {
            'title': e.target.form[0].value,
            'description': e.target.form[1].value
        }
        fetch(
            `${TODO_URL}/api/tasks/${id}/edit/`,
            {
                headers: HEADERS,
                method: 'PUT',
                body: JSON.stringify(body)
            }
        ).then(res => res).catch(err => err);
        history.push(`/task/${id}`)
    }

    return (
        <form>
            <div>
                <label>Title</label>
                <input type="text" onChange={handleChange} value={task.title} />
            </div>
            <div>
                <label>Description</label>
                <textarea onChange={handleChange} value={task.description}></textarea>
            </div>
            <button onClick={handleSubmit}>Submit</button>
        </form>
    );
}

export default TaskEdit;

我尝试像这样为useState设置默认值:useState({title: 'title', description: 'description'})但这并不能防止错误,也不能将此编辑表单添加到Task.js组件中task(最明确定义的位置)。

布里斯·弗里斯科(Brice Frisco)

你有:

<input type="text" onChange={handleChange} value={task.title} />

您的handleChange方法是:

const handleChange = (e) => {
        setTask(e.target.value)
}

当你的onChange火,你的task状态将被设置为一个字符串的值(<input />

因此,当您task.titleonChange开火进行引用时,它将是未定义的。的情况也是如此task.description

试试这个:

const handleTitleChange = (e) => {
  setTask({...task, title: e.target.value})
}

const handleDescriptionChange = (e) => {
  setTask({...task, description: e.target.value})
}

<input type="text" onChange={handleTitleChange} value={task.title} />
<textarea onChange={handleDescriptionChange} value={task.description} />

或者,您可以将task状态分别拆分titledescription

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在JavaScript中编辑输入值?

来自分类Dev

填充现有字段后如何在表单中添加一组输入字段

来自分类Dev

如何在Emacs中输入minibuffer进行编辑?

来自分类Dev

如何在Emacs中输入minibuffer进行编辑?

来自分类Dev

如何在React输入框中制作可编辑的前缀值?

来自分类Dev

如何在React中编辑多个输入控制的组件?

来自分类Dev

在用户的“编辑信息”表单中,如何在模型的响应中包括字段名称和用户的输入值

来自分类Dev

如何在Angular4中获取具有相同ID的输入字段的值

来自分类Dev

如何在输入字段中从SimpleXML数组写入值

来自分类Dev

如何在输入字段中添加多个值

来自分类Dev

如何在javascript中获取输入字段的值

来自分类Dev

如何在输入字段中从SimpleXML数组写入值

来自分类Dev

如何在 Riot.js 中引用输入字段值?

来自分类Dev

如何从现有变量中减去输入?

来自分类Dev

如何在python中编辑输入的文本

来自分类Dev

如何在Elasticsearch中基于输入字段获取字段的总和值(输入字段和总和输出字段不同)

来自分类Dev

输入日期值并与现有表进行比较

来自分类Dev

如何在 Laravel Dusk 中输入与另一个输入字段具有相同类名的输入字段

来自分类Dev

React Js-无法在输入字段中输入值

来自分类Dev

输入字段和React,因为attr中的react id导致输入字段不可编辑

来自分类Dev

如何从输入字段中获取数字值?

来自分类Dev

如何在输入字段中包含glyphicon?

来自分类Dev

如何在输入字段中附加内容?

来自分类Dev

如何在输入字段中显示结果?

来自分类Dev

如何在输入字段中实现建议

来自分类Dev

如何从React中的useRef重置输入字段?

来自分类Dev

将输入字段中的所有值放入数组中并对其进行排序

来自分类Dev

如何在$ filter mongodb中将数组字段与数组输入值进行比较

来自分类Dev

如何在其他文本字段中输入值时清除文本字段

Related 相关文章

  1. 1

    如何在JavaScript中编辑输入值?

  2. 2

    填充现有字段后如何在表单中添加一组输入字段

  3. 3

    如何在Emacs中输入minibuffer进行编辑?

  4. 4

    如何在Emacs中输入minibuffer进行编辑?

  5. 5

    如何在React输入框中制作可编辑的前缀值?

  6. 6

    如何在React中编辑多个输入控制的组件?

  7. 7

    在用户的“编辑信息”表单中,如何在模型的响应中包括字段名称和用户的输入值

  8. 8

    如何在Angular4中获取具有相同ID的输入字段的值

  9. 9

    如何在输入字段中从SimpleXML数组写入值

  10. 10

    如何在输入字段中添加多个值

  11. 11

    如何在javascript中获取输入字段的值

  12. 12

    如何在输入字段中从SimpleXML数组写入值

  13. 13

    如何在 Riot.js 中引用输入字段值?

  14. 14

    如何从现有变量中减去输入?

  15. 15

    如何在python中编辑输入的文本

  16. 16

    如何在Elasticsearch中基于输入字段获取字段的总和值(输入字段和总和输出字段不同)

  17. 17

    输入日期值并与现有表进行比较

  18. 18

    如何在 Laravel Dusk 中输入与另一个输入字段具有相同类名的输入字段

  19. 19

    React Js-无法在输入字段中输入值

  20. 20

    输入字段和React,因为attr中的react id导致输入字段不可编辑

  21. 21

    如何从输入字段中获取数字值?

  22. 22

    如何在输入字段中包含glyphicon?

  23. 23

    如何在输入字段中附加内容?

  24. 24

    如何在输入字段中显示结果?

  25. 25

    如何在输入字段中实现建议

  26. 26

    如何从React中的useRef重置输入字段?

  27. 27

    将输入字段中的所有值放入数组中并对其进行排序

  28. 28

    如何在$ filter mongodb中将数组字段与数组输入值进行比较

  29. 29

    如何在其他文本字段中输入值时清除文本字段

热门标签

归档