请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

想请问下老师,为什么用函数式更新state,无法直接获取到事件对象参数e,而需要将e.target.value赋值给局部变量呢

即在Todolist组件中,监听input输入的方法:

handleChange(e) {
    // 此处存在一个疑问,为什么不可以直接使用e
    const value = e.target.value; 
    this.setState((prevState) => ({
      inputValue: value
    }));
  }

为什么不可以直接使用参数e呢,在我的理解里,参数e和方法内部的局部变量是等价的,这步赋值操作不太理解,希望得到老师的解答,非常感谢。

PS: 刚才测试了一下,只有e作为特殊存在是这样,比如在Todolist组件中代码如下

constructor(props) {
   ...
   this.handleDelete = this.handleDelete.bind(this, 1);
 }
 handleChange(num, e) {
  this.setState((prevState) => ({
    inputValue: num
  }));
}

在input输入任何字符均显示1,符合逻辑,所以推断参数e无法正常使用是react的特殊处理?

正在回答

2回答

Dell 2019-02-21 22:32:41

是的,这是react基于性能考虑的一个特殊处理

0 回复 有任何疑惑可以回复我~
  • 提问者 rubysakura #1
    收到,谢谢老师
    回复 有任何疑惑可以回复我~ 2019-02-21 22:34:50
Watson丶 2019-09-12 00:37:12
1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号