Lodashを使用して、コンポーネントのデバウンス関数を次のように呼び出しています。
...
import _ from 'lodash';
export default {
store,
data: () => {
return {
foo: "",
}
},
watch: {
searchStr: _.debounce(this.default.methods.checkSearchStr(str), 100)
},
methods: {
checkSearchStr(string) {
console.log(this.foo) // <-- ISSUE 1
console.log(this.$store.dispatch('someMethod',string) // <-- ISSUE 2
}
}
}
checkSearchStr
がfoo
を知らないことですundefined
であることです_.debounce
から呼び出されたときに、メソッドがthis
を認識しないのはなぜですか?そして正しい使い方は何ですか?
時計は次のようになります。
watch: {
searchStr: _.debounce(function(newVal){
this.checkSearchStr(newVal)
}, 100)
},
ただし、これは少し変わっています。時計をデバウンスしたい理由がわかりません。おそらく、checkSearchStr
メソッドをデバウンスするだけです。
watch: {
searchStr(newVal){
this.checkSearchStr(newVal)
}
},
methods: {
checkSearchStr: _.debounce(function(string) {
console.log(this.foo)
console.log(this.$store.dispatch('someMethod',string))
}, 100)
}
もう1つ指摘したいことがあります。コードのどこにもsearchStr
が定義されていません。 Vueで値を監視するときは、データまたは計算されたプロパティを監視しています。現在定義しているように、searchStr
の監視は実行されません。