首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将"event“对象传递给函数版本的"this.setState()"?

如何将"event“对象传递给函数版本的"this.setState()"?
EN

Stack Overflow用户
提问于 2018-08-12 01:01:59
回答 1查看 913关注 0票数 2

所以我使用的是this.setState()的函数形式,在这里传递一个返回对象的函数。

但是,当我尝试将onChange绑定到输入上并执行此操作时...

代码语言:javascript
复制
onInputChange = event => {
    this.setState(() => ({
        ...this.state,
        [event.target.name]: event.target.value
    }));
};

它抛出一个错误,指出事件显然出在Cannot read property 'name' of null对象中,那么我如何将事件对象传递给this.setState()?

我试过了,但不起作用...

代码语言:javascript
复制
onInputChange = event => {
    this.setState((prevState, event) => ({
        ...this.state,
        [event.target.name]: event.target.value,
    }));
};

然而,唯一对我起作用的是这样做……

代码语言:javascript
复制
onInputChange = e => {
    const { name, value } = e.target;
    this.setState(() => ({
        ...this.state,
        [name]: value
    }));
};

但我怀疑这是不是正确的打点方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 01:17:25

像这样的东西应该是可行的

代码语言:javascript
复制
onInputChange = event => {
    event.persist();
    this.setState(() => ({
        ...this.state,
        [event.target.name]: event.target.value
    }));
};

尽管我会说我最喜欢你的最后一次尝试。

以下是有关react -> https://reactjs.org/docs/events.html中的synth事件的文档

此外,函数式setState签名接收组件的当前状态和下一个属性作为参数,而不是您所拥有的(prevState, event) => {

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51801900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档