-1
A
回答
1
不,你不需要绑定this
为箭头的功能。它们与封闭上下文具有相同的this
值。
this.myValue = 5;
const myFunc =() => {
this.myValue = 10;
}
myFunc();
console.log(this.myValue); // 10
有关更多详细信息,请参见here。
+1
谢谢你清除我的概念 –
1
如果您的绑定功能需要this
(这似乎是强制性的),您实际上需要正确绑定this
。最好的方式(由airbnb eslinter推荐)是胖箭头功能。
作为为例,让我们假设我有这个组件:
class MyComponent extends React.Component {
toBeRunOnSpanClick() {
this.props.clickHandler();
}
render() {return <span onclick={/* What should you use here*/}></span>}
}
这是行不通的:
class MyComponent extends React.Component {
toBeRunOnSpanClick() {
this.props.clickHandler();
}
render() {return <span onclick={this.toBeRunOnSpanClick}></span>}
}
在toBeRunOnSpanClick功能this
不会比你的类相同。这是JavaScript的工作方式。
的好办法是:
class MyComponent extends React.Component {
toBeRunOnSpanClick() {
this.props.clickHandler();
}
// this.toBeRunOnSpanClick.bind(this) will work too but it is way less comprehensive
render() {return <span onclick={() => {this.toBeRunOnSpanClick()}}></span>}
}
相关问题
- 1. 为什么“this”在胖箭头函数定义中未定义?
- 2. 我很困惑。我应该写什么在default.ctp
- 3. 我对JavaScript函数感到困惑吗?
- 4. 对箭头功能感到困惑
- 5. 胖箭头重复?
- 6. 胖箭头功能以及胖箭头功能如何工作
- 7. 我很困惑pip安装
- 8. 我很困惑枚举
- 9. es6katas.org卡塔#6:箭头函数 - 绑定
- 10. FLEX I很困惑
- 11. MVC RouteDatas很困惑
- 12. AndroidHttpClient中的HttpRequestInterceptor。我很困惑!
- 13. 我很困惑。数组内容不会保持不变吗?
- 14. 困惑在递归函数
- 15. 我很困惑我该做什么(android渲染引擎)
- 16. 使用调用,应用,绑定的箭头函数 - 不工作?
- 17. 箭头函数“this”绑定在React组件中不起作用
- 18. 困惑绑定在用户控件
- 19. 我很困惑在哎呀,我很困惑在术语抽象类扩展和接口实现在oops
- 20. 在定义时间绑定箭头函数
- 21. 我很困惑onTouch(),请看看
- 22. 我很困惑如何使用@SessionAttributes
- 23. 我很困惑于一个小概念
- 24. 我很困惑文件结束
- 25. 我很困惑与日历类图
- 26. 我很困惑PROJECT_PATH = os.path.abspath(os.path.dirname(__ file__))
- 27. 可伸缩Websockets - 我很困惑
- 28. tag分派/ enable_if - 我很困惑
- 29. 我很困惑Java多线程
- 30. 的.htaccess mod_rewrite的 - 我很困惑
的可能的复制[?如何使用ES6类方法箭头(http://stackoverflow.com/questions/31362292/how-to-use-es6 -arrow-in-class-methods) –
'myFunc.bind(this)'与'()=> this.myFunc()'相同。 – Sulthan