【发布时间】:2019-03-07 10:47:49
【问题描述】:
我有一个小组件来更改我网站的语言。由于 eslint 配置了jsx-no-bind,所以下面的代码会报错。
const ChangeLanguage = ({ toggleLanguage }) => {
const toggle = () => {
console.log('hi')
toggleLanguage()
}
return (
<IconButton
onClick={toggle}
>
<Language /> // this is an svg-icon
</IconButton>
)
}
export default connect(null, { toggleLanguage })(ChangeLanguage)
我搜索了jsx-no-bind 的用法。有人说我们应该启用它,因为在每次渲染中,javascript 都会生成新函数,并且会导致不必要的渲染(如 airbnb 代码约定[link])。但是其他一些人说它的性能改进可以忽略不计,并且会降低代码的可读性(例如[link])。这里有两个问题:
- 如何解决错误(即不禁用
jsx-no-bind)。 - 您对
jsx-no-bind配置有什么建议(即我是否应该将其完全/部分从 eslint 配置中删除?)。
PS:有更多关于在网络中将箭头函数或绑定方法作为道具传递的文档。但我在问题陈述中只提到了其中两个。
【问题讨论】:
标签: javascript reactjs jsx