详解vuex 中的 state 在组件中如何监听

网友投稿 231 2023-05-13


详解vuex 中的 state 在组件中如何监听

前言

不知道大家有没有遇到过这样一种情况? vuex中的state会在某一个组建中使用,而这个状态的初始化是通过异步加载完成的。组件在渲http://染过程中,获取的state状态为空。也就是说组件在异步完成之前就已经完成渲染了,导致组件的数据没有来得及渲染。

问题举例

举例说明如下:

// topo.vue

created() {

this.getUserAndSysIcons();

},

methods: {

getUserAndSysIcons() {

const self = this;

// 用户图标

iconApi.getUserIcons().then(response => {

self.$store.dispatch('setUserIcons', response.data);

});

}

}

在topo.vue中crhttp://eated或者mounted完成的时候调用 getUserAndSysIcons() 异步初始化userIcons,方便在其他组件中使用这个数据。

// modifyhost.vue

mounted() {

this.userIcons = this.$store.state.topo.userIcons; // 用户图标

}

在modifyhost.vue中渲染数据是,需要使用userIcons。在modifyhost.vue组件mounted完成的时候,userIcons数据还没有被初始化。导致modifyhost.vue渲染为空。

思考

想的是,当topo.vue中异步获取userIcons完成的时候,再去将modifyhost.vue组件中的userIcons初始化。这样就会自动改变完成渲染。那么怎么知道异步什么时候完成呢?

于是就想到了vue一个好东西watch监听,监听某一个数据的变化。我们都知道是,很容易监听组件中局部数据的变化。那么,这里怎么去监听sthttp://ate中的变化呢?于是有利用了computed计算属性。具体操作如下:

解决

在computed中写一个计算属性getUserIcons,返回状态管理中的userIcons。然后在watch中监听这个计算属性的变化,对modifyhost.vue中的userIcons重新赋值。

computed: {

getUserIcons() {

return this.$store.state.topo.userIcons;

}

},

watch: {

getUserIcons(val) {

this.userIcons = val;

}

}

最终效果


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序获取用户openId的实现方法
下一篇:微信小程序 侧滑删除(左滑删除)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~