2017-11-07 4 views
0

私のVueインスタンス内のupdated()フックは、Vuexが更新された後にキーボードイベント($ forceUpdate()経由)をトリガするたびに起動しません。フックが毎回発射されるようにする方法はありますか?このプロセスはキーボードイベントによって起動されますが、3または4のキーをすばやく入力すると、updated()フックが2回だけ起動されます。Vueアップデートフックが毎回鳴らない

.... 
methods: { 
    keyDown() { 
    this.$store.dispatch('updateVuexState', payload) 
    this.$forceUpdate() // UPDATES STATE TO THE VIEW // 

    // ... SHOULD THEN TRIGGER UPDATED HOOK EVERY TIME IDEALLY, BUT DOESN'T ?? // 
    // BASED ON THE TIME SPAN, SOMETIMES HOOK IS SKIPPED ONCE OR TWICE BASED ON // 
    // KEYBOARD INPUT SPEED // 
    } 
}, 
.... 
updated() { 
    console.log('updated...') // FIRED ONLY WITH A LONGER TIME SPAN // 
}, 
.... 
+0

[Vue updates * asynchrononously *](https://vuejs.org/v2/guide/reactivity.html#Async-Update-Queue)。 – Bert

+0

私は見るが、非同期ではなく、待ち行列に入れている。しかしそれは私のために問題を提起する。 nextTickの使用を提案していますが、どのように役立つのか分かりません。 –

+0

$ forceUpdate()を使用するのは意味がありません。それは本当に更新キューを強制することだけを意味するのでしょうか? –

答えて

0

ジャストVモデルを使用し、またはVモデルなしで、代わりにonkeydownイベントのoninputイベントを使用します。そしてあなたのアプリケーションは、強制的な更新なしで動作します。

+0

私はoninputを使うことができましたが、何も直接編集していません。私はイベントを防止し、手動で状態を操作するので、keydownイベントが提供するさまざまなキーにアクセスする必要があるため、oninputではできません。私はv-modelを試して、それが役立つかどうかを見ることができますが、contenteditableのテキストコンテンツを操作しているので、それがどれくらいうまくいくかはわかりません。 –

+0

@JustinLevineしかし、v-modelディレクティブは入力にしか使用できません... – WaldemarIce

+0

私は見るので、それらのどちらも可能性はありません。 –

関連する問題