1
申し訳ありませんが、ES6の初心者くさい:流星ES6脂肪矢印機能と `onCreatedでthis`が機能していない
Template.hello.onCreated(() => {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() + 1);
},
});
私はボタンをクリックすると、私はCannot read property 'get' of undefined
を取得しかし、私はやる
Template.hello.onCreated(function(){
// counter starts at 0
this.counter = new ReactiveVar(0);
});
正常に動作します。
私は得意でないthis
キーワードのES6の太い矢印のバインディングで何かが起こっていますか?
興味深い。私は、矢印機能は、すべての機能を今後ES6で書く必要があると思ったのですか?これはES6では、実際にあなたが 'this'を使用している場合に使用する関数のタイプについて実際に考える必要があるのでしょうか? BTWの「カウンタ」は実際にはグローバル変数として作成されました。 – fuzzybabybunny
正確には、両方のタイプの関数にはそれぞれ独自のユースケースがあります。場合によってはどちらを選択するかは関係ありませんが、 'this'コンテキストがフレームワークによって提供されるコールバック(' onCreated'など)は、「通常の」関数が必要な場合の1つの例です。ここにいくつかの他のケースをリストした素敵な記事があります:https://rainsoft.io/when-not-to-use-arrow-functions-in-javascript/。私のプロジェクトでは、矢印の機能によってコードを読みやすくしない限り、常に 'function'を使用します。 – chrisklaussner
ああ、ありがとう。ここのスーパー貴重な情報。 – fuzzybabybunny