想请问下老师,为什么用函数式更新state,无法直接获取到事件对象参数e,而需要将e.target.value赋值给局部变量呢
来源:3-6 TodoList 代码优化
rubysakura
2019-02-21
即在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回答
-
是的,这是react基于性能考虑的一个特殊处理
012019-02-21 -
Watson丶
2019-09-12
10
相似问题