I'm using lodash to call a debounce function on a component like so:
... 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 doesn't know about foo undefined as wellWhy doesn't my method know this when called through _.debounce? And what is the correct usage?
Your watch should look like this.
watch: { searchStr: _.debounce(function(newVal){ this.checkSearchStr(newVal) }, 100) }, This is a bit unusual, however. I don't see why you would want to debounce a watch. Possibly you would rather just debounce the checkSearchStr method.
watch: { searchStr(newVal){ this.checkSearchStr(newVal) } }, methods: { checkSearchStr: _.debounce(function(string) { console.log(this.foo) console.log(this.$store.dispatch('someMethod',string)) }, 100) } One other thing I would like to point out; no where in the code is searchStr defined. When you watch a value with Vue, you are watching a data or computed property. As you have currently defined it, the watch on searchStr will never execute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With