Javascript 在带有setState的React类组件中使用箭头函数的最佳实践
我试图理解在React类组件中使用箭头函数和设置状态的两种方法之间的区别。两者似乎都能正常工作,并能正确设置状态 在受控组件中,我像这样调用有问题的函数Javascript 在带有setState的React类组件中使用箭头函数的最佳实践,javascript,reactjs,arrow-functions,Javascript,Reactjs,Arrow Functions,我试图理解在React类组件中使用箭头函数和设置状态的两种方法之间的区别。两者似乎都能正常工作,并能正确设置状态 在受控组件中,我像这样调用有问题的函数 我看到这些函数定义的两种方式如下: 方法1。 handleChange = (e) => this.setState({ name: e.target.value}); 方法2 handleChange = (e) => { this.setState({ name: e.target.value }); }; 我的问题是
我看到这些函数定义的两种方式如下:
方法1。
handleChange = (e) => this.setState({ name: e.target.value});
方法2
handleChange = (e) => {
this.setState({ name: e.target.value });
};
我的问题是:
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
this.state={name:'}
}
handleChange=(e)=>this.setState({name:e.target.value});
handleChange2=(e)=>{
this.setState({name:e.target.value});
};
render(){
返回(
{this.state.name | |'还没有名字'}
);
}
}
const rootElement=document.getElementById(“根”);
render(,rootElement)代码>
方法1简洁易读。它不返回任何内容。请注意,此方法不需要e
周围的括号
方法2是首选方法,以防在文本更改时,除了状态更改(setState()
)之外,您还需要执行更多操作。例如,您想调用另一个函数,或者只是想以某种方式验证输入。此外,如果添加return语句,则可以返回值
handleChange = (e) => this.setState({ name: e.target.value});
是同一件事吗
handleChange = e => {
return this.setState({ name: e.target.value});
};
没有函数体{}
的arrow函数也将隐式返回单个语句,如您所说。如果您不想要返回值,您仍然可以在不使用函数体的情况下编写它,只要忽略返回值,如果您发现这种编写方法更好的话。这只是口味的问题。它们实际上是一样的,因为它们都将返回未定义的。setState不返回值,第二个不提供返回值。它们是相同的东西,第一个隐式返回。选项1中的(e)
周围也不需要括号,因为它是单个argument@GhostCat,不用担心。这确实是有帮助的,也是有道理的。我将再次阅读您在评论中发布的分类帖子。因为这提供了更多关于我错在哪里的背景。我很欣赏快速而友好的复出!