javascript - What is the difference between "(.....);" and "{......}" in react?
问题描述
I am getting error shown in image for the below code:
handlechange(event) {
this.setState (prevState => {
return(
checked : !prevState.checked
);});
}
But when I changes round brackets after "return" into curly, it runs fine. I mean what's happening under the hood? What causes the error to go away?
handlechange(event) {
this.setState (prevState => {
return{
checked : !prevState.checked
}});
}
解决方案
这不是 React 的事情。您的第一个示例只是无效的 JavaScript 语法。¹您的第二个示例是有效语法,返回通过对象初始化程序创建的对象(通常称为对象“文字” {checked: !prevState.checked}
)。
¹()
后return
包装一个表达式,然后在您拥有的表达式中,checked: !prevState.checked
它看起来像一个带标签的语句。但是您不能将带标签的语句放在需要表达式的位置。
旁注:另一种编写方法是在参数列表中使用属性解构并在对象初始化程序中使用速记属性:
handlechange(event) {
this.setState(({checked}) => {
checked = !checked;
return {checked};
});
}
推荐阅读
- java - 如何将参数传递给 Maven 中的 annotationProcessor
- image - 有没有办法在颤动的文本中显示图像
- typescript - 仅在端口 8080 (Jhipster) 上访问网络摄像头的权限被拒绝
- r - 结合几个不同长度的向量,在R中制作一个数据框
- for-loop - 如何在 Twig 中使用变量循环序列?
- jquery - 从 jQuery 更新 Vue 模型
- javascript - React.js 中的功能组件内部去抖动
- node.js - 如何使用 React 中的值传递图像文件和对象并在 Node.js (express) 服务器上检索它?
- python - 在 Windows 中使用 python 获取重启历史
- r - 由于未能安装依赖包,使用 travis CI 开发 R 包会出错