当React中的值被代码更改时,如何在输入上触发onChange事件?

凯乐

我正在尝试学习React JS,并且正在从事个人项目。我陷入困境是因为我无法将子组件中输入字段的值传递给父组件的状态。

我尝试使用onChange事件,但由于某种原因,它正在调用的函数handleChange并未被触发。

这是父组件的片段:

class App extends Component {
    state = {
        myArray: [{ //myArray is being updated by another child component, which sets the values for id and amount; this works fine
                id: 1,
                amount: 12
            },
            {
                id: 2,
                amount: 23
            }
        ]
        total: 0 //expected value for total is 35
    };

    handleChange = e => {
        const { name, value } = e.target
        this.setState({
            [name]: value
        });
    }

    render() {
        return ( 
            <Child 
            handleChange={this.handleChange}
            myArray={this.state.myArray} />
            )
        }
    }

以下是Child组件的摘录:

class Child extends Component {

    render() {
        const { myArray, handleChange } = this.props;

        const totalAmount = myArray.reduce(function (a, b) {
            return a + b.amount;
        }, 0);

        return (
        <div>
            <label htmlFor="total"> Total Amount: </label>
            <input id="total"
            name="total"
            type="number"
            placeholder="0.00"
            value={totalAmount}
            onChange={e => handleChange(e)}
            /> 
        </div>
        )
    }
}

总输入字段中的in值正确呈现。但是,我试图实现的是每次更改此输入字段的值时(当其他子组件更新myArray值,因此总和也更改时),我希望在父组件的状态下更新总值。

尼基·普拉波沃(Nicky Prabowo)

您不需要手动传递字段名称,您可以从事件中获取它。首先给您的输入一个名字

<input name="total" ...etc >

然后,您就可以在 handleChange

handleChange = e => {
   const { name, value } = e.target
   this.setState({
       [name]: value
   )}
  }

您在“子组件”中的调用方式应为

onChange={handleChange}

在此处查看代码https://codesandbox.io/embed/unruffled-pascal-d5p2q?fontsize=14

为了获得更好的结构,最好将childComponent2放在childComponent1旁边。它只需要全部道具。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以编程方式更改值时如何在文本输入上触发 onChange 事件 - 反应

来自分类Dev

使用事件触发器如何在输入更改时将值传递给函数

来自分类Dev

输入动态更改时,不会触发onChange事件

来自分类Dev

如何在隐藏的输入类型上使用“更改时”事件?

来自分类Dev

输入中的值被修改时的触发事件

来自分类Dev

当输入值以编程方式更改时,如何触发JQuery change事件?

来自分类Dev

为什么更改状态值不会触发REACT中输入元素的onChange

来自分类Dev

如何在React中的滚动事件上触发功能

来自分类Dev

onchange 事件未在 flatpickr() 输入上触发

来自分类Dev

数据集更改时,SqlDependency不会触发OnChange事件

来自分类Dev

窗口更改时如何触发事件?

来自分类Dev

哈希位置更改时如何触发事件

来自分类Dev

标签文本更改时如何触发事件

来自分类Dev

窗口更改时如何触发事件?

来自分类Dev

哈希位置更改时如何触发事件

来自分类Dev

如何在 Java 拥有类中的“List<T>”中的“T”属性发生更改时实现和触发事件

来自分类Dev

div中的更改输入上的jQuery触发事件

来自分类Dev

如何处理React的onChange事件中的十进制值作为输入?

来自分类Dev

HTML Textarea:值更改时如何通知(未触发输入事件)

来自分类Dev

页面上的输入更改时,不会触发主干视图事件

来自分类Dev

与常规DOM中的输入不同,React触发虚拟DOM输入的onChange事件。为什么是这样?

来自分类Dev

如何更改已检查的属性并触发同一输入的onchange事件?

来自分类Dev

如何更改已检查的属性并触发同一输入的onchange事件?

来自分类Dev

实际未更改时如何触发属性更改事件

来自分类Dev

如何在选定的emberjs上触发更改事件

来自分类Dev

如何在更改事件上不触发提交按钮

来自分类Dev

IndexedDb更改时触发事件?

来自分类Dev

如果在jQuery中更改了多个输入元素的值,则会在change事件上触发

来自分类Dev

更改时如何在div中显示范围值?

Related 相关文章

  1. 1

    以编程方式更改值时如何在文本输入上触发 onChange 事件 - 反应

  2. 2

    使用事件触发器如何在输入更改时将值传递给函数

  3. 3

    输入动态更改时,不会触发onChange事件

  4. 4

    如何在隐藏的输入类型上使用“更改时”事件?

  5. 5

    输入中的值被修改时的触发事件

  6. 6

    当输入值以编程方式更改时,如何触发JQuery change事件?

  7. 7

    为什么更改状态值不会触发REACT中输入元素的onChange

  8. 8

    如何在React中的滚动事件上触发功能

  9. 9

    onchange 事件未在 flatpickr() 输入上触发

  10. 10

    数据集更改时,SqlDependency不会触发OnChange事件

  11. 11

    窗口更改时如何触发事件?

  12. 12

    哈希位置更改时如何触发事件

  13. 13

    标签文本更改时如何触发事件

  14. 14

    窗口更改时如何触发事件?

  15. 15

    哈希位置更改时如何触发事件

  16. 16

    如何在 Java 拥有类中的“List<T>”中的“T”属性发生更改时实现和触发事件

  17. 17

    div中的更改输入上的jQuery触发事件

  18. 18

    如何处理React的onChange事件中的十进制值作为输入?

  19. 19

    HTML Textarea:值更改时如何通知(未触发输入事件)

  20. 20

    页面上的输入更改时,不会触发主干视图事件

  21. 21

    与常规DOM中的输入不同,React触发虚拟DOM输入的onChange事件。为什么是这样?

  22. 22

    如何更改已检查的属性并触发同一输入的onchange事件?

  23. 23

    如何更改已检查的属性并触发同一输入的onchange事件?

  24. 24

    实际未更改时如何触发属性更改事件

  25. 25

    如何在选定的emberjs上触发更改事件

  26. 26

    如何在更改事件上不触发提交按钮

  27. 27

    IndexedDb更改时触发事件?

  28. 28

    如果在jQuery中更改了多个输入元素的值,则会在change事件上触发

  29. 29

    更改时如何在div中显示范围值?

热门标签

归档