在React表单中,为什么我们要在输入标签中设置(例如)value = {this.state.task}?

代码

我不明白为什么当它只是一个空字符串时为什么要设置value = {this.state.task},以及数据流从输入值到状态的准确程度。

当我们第一次设置该值时,它基本上是一个空字符串。但是,当我尝试实际设置value =''时,输入字段在呈现的页面上无法正常工作。

我得到onChange,将状态设置为相应的名称和值,这就是数据流入状态的方式。但是为什么当我们再次设置value =''时为什么不起作用?

import React, { Component } from 'react';
import uuid from 'uuid/v4';

export class NewTodoForm extends Component {
  constructor(props) {
    super(props)
    this.state = {
       task: ""
    }
    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }
  handleChange(e){
    this.setState({
      [e.target.name]: e.target.value
    })
  }
  handleSubmit(e){
    e.preventDefault();
    this.props.createTodo({ ...this.state, id: uuid() });
    this.setState({ task: "" });
  }
  render() {
    return (
      <div>
        <form onSubmit={this.handleSubmit}>
          <label htmlFor='task'>New Todo</label>
          <input
            type='text'
            placeholder='New Todo'
            id='task'
            name='task'
            // why is this {this,state.task} ?
            value={this.state.task}
            onChange={this.handleChange}
          />
          <button>Add Todo</button>
        </form>
      </div>
    )
  }
}

export default NewTodoForm
赫里斯托·埃涅夫(Hristo Enev)

因为value正在设置...输入的值。通过value={this.state.task}基本上做到这一点,您就可以将输入与组件的状态以及React组件的生命周期相连接。因此,基本上,无论何时,只要您更改组件状态的状态即可从任何地方(甚至以编程方式)获得输入,React将能够正确更新输入,并且不会发生任何错误或奇怪的事情。

React文档中对此进行了很好的解释。他们正在做这个受控组件...

其值由React这样控制的输入表单元素称为“受控组件”。

...从而使React组件的状态成为唯一的“真理来源”,这意味着可以防止出现怪异的错误和不良行为。

由于value属性是在表单元素上设置的,因此显示的值将始终为this.state.value,从而使React状态成为真相的来源。

有一个真理源而不是很多真理总是一种好习惯。在这种情况下,如果您使输入的值与组件的状态不同,那么您将获得多个真相,从而使您的应用暴露于错误中。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的UI无法反映@State属性中的更改?

来自分类Javascript

为什么this.state在react native中未定义?

来自分类Dev

我们为什么要在pytorch中“打包”序列?

来自分类Dev

为什么我们不能在col标签中设置颜色?

来自分类Dev

在模板中访问$ state

来自分类Dev

如果可以编写我们自己的等待对象,那么异步方法为什么只能返回Task <T>,Task和void?

来自分类Dev

为什么我们需要在React Native中绑定函数?

来自分类Dev

在React中this.state与state

来自分类Dev

我们如何完成芹菜periodic_task中的停止任务?

来自分类Dev

为什么我们不需要在React中绑定箭头功能?

来自分类Dev

我们为什么不使用let代替State?

来自分类Dev

了解State Monad中的State论点

来自分类Dev

我们为什么需要在vaadin的绑定中设置bean ** binder.setBean(object)**

来自分类Dev

列出sbt`Task`标签

来自分类Dev

为什么我们需要在React Hook中返回一个函数?

来自分类Dev

为什么我们需要在ConnectionString中设置最小池大小

来自分类Dev

线程唤醒后,用TASK_RUNNING调用set_current_state的必要性是什么?

来自分类Dev

什么是“!” JavaScript中`state =!state;`中的均值

来自分类Dev

为什么当我们调用“任务”变量时,必须将其写为“ task()”

来自分类Dev

当我们执行task.getException()时,如何更改错误消息,例如用户已经注册?

来自分类Dev

在React State中传递html标签的正确方法是什么?

来自分类Dev

Python 多线程进入 Celery 任务。celery_task.update_state() 错误

来自分类Dev

如何在React中将多个表单输入结果添加到数组State中

来自分类Dev

React State Hook - 我无法设置状态

来自分类Dev

linux 内核中有争议的 __set_task_state(tsk, state_value) 宏语法

来自分类Dev

为什么在 React 中 State 比 Link 更受欢迎?

来自分类Dev

(React) 在 useEffect 中设置 state 的问题

来自分类Dev

为什么我们需要在打字稿中编写函数的泛型?例如函数 fill<IDontKnow>(){}

来自分类Dev

我们如何知道哪个 Thread 用于执行 Task?

Related 相关文章

  1. 1

    为什么我的UI无法反映@State属性中的更改?

  2. 2

    为什么this.state在react native中未定义?

  3. 3

    我们为什么要在pytorch中“打包”序列?

  4. 4

    为什么我们不能在col标签中设置颜色?

  5. 5

    在模板中访问$ state

  6. 6

    如果可以编写我们自己的等待对象,那么异步方法为什么只能返回Task <T>,Task和void?

  7. 7

    为什么我们需要在React Native中绑定函数?

  8. 8

    在React中this.state与state

  9. 9

    我们如何完成芹菜periodic_task中的停止任务?

  10. 10

    为什么我们不需要在React中绑定箭头功能?

  11. 11

    我们为什么不使用let代替State?

  12. 12

    了解State Monad中的State论点

  13. 13

    我们为什么需要在vaadin的绑定中设置bean ** binder.setBean(object)**

  14. 14

    列出sbt`Task`标签

  15. 15

    为什么我们需要在React Hook中返回一个函数?

  16. 16

    为什么我们需要在ConnectionString中设置最小池大小

  17. 17

    线程唤醒后,用TASK_RUNNING调用set_current_state的必要性是什么?

  18. 18

    什么是“!” JavaScript中`state =!state;`中的均值

  19. 19

    为什么当我们调用“任务”变量时,必须将其写为“ task()”

  20. 20

    当我们执行task.getException()时,如何更改错误消息,例如用户已经注册?

  21. 21

    在React State中传递html标签的正确方法是什么?

  22. 22

    Python 多线程进入 Celery 任务。celery_task.update_state() 错误

  23. 23

    如何在React中将多个表单输入结果添加到数组State中

  24. 24

    React State Hook - 我无法设置状态

  25. 25

    linux 内核中有争议的 __set_task_state(tsk, state_value) 宏语法

  26. 26

    为什么在 React 中 State 比 Link 更受欢迎?

  27. 27

    (React) 在 useEffect 中设置 state 的问题

  28. 28

    为什么我们需要在打字稿中编写函数的泛型?例如函数 fill<IDontKnow>(){}

  29. 29

    我们如何知道哪个 Thread 用于执行 Task?

热门标签

归档