私はバックボーンと反応します。バックボーンのobject.offを反応クラスのメソッドコールバックで使用する
私は別のアプローチを試みていると、どうやらthis.update
のコンテキストがバックボーンによるピックアップ/アクセスされていない、backbone
作品にoff
メソッドを作ることができないし、それを削除することはできません。私はthis.update
を抽出し、MyStatic.update = function update() { // do stuff }
のように、クラスは、関数がグローバル行う前に入れてテストしてoff
方法は動作しますが、すぐに私はたぶん私は何かを明らかに不足しているが、私だsome.backbone.object.on('change:total_score', MyStatic.update.bind(this));
のようにクラス内のメソッドにthis
をバインド動作を停止しますバックボーンの新機能で、コンポーネントwillComponentMount
が実行されるとすぐにイベントを削除する必要があります。何か案は?
import React, {Component} from 'react';
class SomeClass extends Component {
componentWillMount() {
some.backbone.object.off('change:total_score', this.update);
some.backbone.object.on('change:total_score', this.update);
}
update() {
// do something
}
}
UPDATE:私は既に矢印異なる方法で機能し、コンテキストを結合して使用しよう
this.update = this.update.bind(この); //コンストラクタ内
const update =()=> this.update(); // off
メソッドの前に
私が今行っていることは、バインドされていない静的関数を作成したので、参照を見つけてoff
メソッドでイベントを削除して渡しています私のアプリケーション全体で既に宣言していたグローバルオブジェクトを介したインスタンス参照は、最もエレガントな方法ではなく、うまくいきます。もし誰かがより良い方法でそれを修正する方法を知っていればうまくいくでしょう。
import React, {Component} from 'react';
class SomeClass extends Component {
static myUpdate =() => {
const context = someGlobalStore.context;
context.update();
}
componentWillMount() {
someGlobalStore.context = this;
some.backbone.object.off('change:total_score', SomeClass.myUpdate);
some.backbone.object.on('change:total_score', SomeClass.myUpdate);
}
update() {
// do something
}
}
私はすでに提案してくれてありがとうございますが、何らかの理由でバックボーンが関数へのポインタを失うのは、バインドが適用されているときです。バックボーンがバックボーンコンテキスト内の関数にアクセスしようとしていると思います。最後にバインドされていない静的メソッドを作成し、 'store' /グローバル変数を介してクラスインスタンスのコンテキストを渡します。私はよりエレガントな方法ではないと思っていますが、それでもなぜバインドが自動的にバックボーンに影響するのか理解できません。 – ncubica
矢印機能をバインド/使用すると、機能のコンテキストは変更されません。最初にコンポーネントがマウントされるのは、すでにイベントにアタッチされている関数ですか? – lavish