uniapp自定义事件跨页面传值怎么不具备响应式
时间: 2023-10-10 18:04:44 浏览: 97
在Uniapp中,自定义事件跨页面传值本身并不具备响应式。当我们在一个页面中使用 `$emit` 触发自定义事件时,目标页面中的 `$on` 事件处理函数只会在事件发生时被调用一次,并不会随着数据的变化而被重新调用。
如果我们希望在目标页面中能够响应数据的变化,可以通过以下两种方式实现:
1. 使用 vuex 进行状态管理,将需要共享的数据存储在 vuex 中。这样,在任何页面中修改数据时,都可以通过 vuex 进行同步更新,其他页面就可以通过监听 vuex 中的数据变化来响应数据的变化。
2. 在目标页面中使用 `$watch` 监听数据的变化,并在回调函数中进行相应的操作。例如:
```javascript
export default {
data() {
return {
value: ''
}
},
mounted() {
this.$on('changeValue', value => {
this.value = value
})
this.$watch('value', value => {
console.log('value changed:', value)
})
}
}
```
在这个例子中,我们在目标页面中监听 `value` 数据的变化,并在控制台输出变化的值。当我们在其他页面中使用 `$emit` 触发 `changeValue` 事件时,目标页面中的 `value` 数据会发生变化,同时 `$watch` 监听函数也会被触发。
阅读全文