还有其他优雅的方法来进行函数绑定吗? [复制]

Posted

技术标签:

【中文标题】还有其他优雅的方法来进行函数绑定吗? [复制]【英文标题】:Is there any other elegant way to do function binding? [duplicate] 【发布时间】:2015-12-12 23:16:44 【问题描述】:

我的项目使用 ES6 类语法、React.js 和 Flux。 这是一段代码:

export default class Splash extends React.Component 

  constructor() 
    super();
    this.state = Comm.reqSplash();
  

  componentDidMount()
    this._appReadyBound = this._appReady.bind(this);
    SplashStore.subscribe(this._appReadyBound);
  

  //Trigger when app data is loaded, if splash is in non-intro mode then end splash
  _appReady()
    SplashStore.unsubscribe(this._appReadyBound);
    //If intro mode, do nothing
    if (this.state.mode !== "non-intro") return;
    this.endSplash();
  

如您所见,在“componentDidMount”方法中,我必须创建“_appReady”方法的绑定版本。

如果我不绑定“this”,“_appReady”方法将无法正常运行。如果我不做绑定版本,unsubscribe方法,如果你更熟悉的话,和“removeChangeListener”一样,不会做它的工作,这意味着监听器还在监听器列表中。

所以我想知道是否有一种优雅的方式来做绑定,或者避免绑定。或者我应该放弃 ES6 类语法?

【问题讨论】:

can i use ES6 fat arrow in class methods? 或 React, “this”, cloneElement and es6 是否可能重复?让我知道他们是否对您有帮助 【参考方案1】:

你试过了吗

_appready = () => 
  //function here


希望对你有帮助

【讨论】:

那应该是什么/在哪里? 它应该替换 appready 函数,用箭头编写的 es6 方式应该给出所需的内部 this 范围。 这不是有效的 ES6。你不能把它放在类体内。 这需要ES7 class properties

以上是关于还有其他优雅的方法来进行函数绑定吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C++虚函数除了vtable怎么实现? [复制]

[react] react中除了在构造函数中绑定this,还有别的方式吗?

同一个类中的同名函数 - 有没有一种优雅的方法来确定调用哪个?

我可以将数组和变量作为参数传递给 C# 中的方法吗? [复制]

从其他两个函数调用相同的函数

java中构造方法和拷贝构造方法是啥意思