详解vuex 中的 state 在组件中如何监听
发布时间 - 2026-01-11 01:15:10 点击率:次前言

不知道大家有没有遇到过这样一种情况? vuex中的state会在某一个组建中使用,而这个状态的初始化是通过异步加载完成的。组件在渲染过程中,获取的state状态为空。也就是说组件在异步完成之前就已经完成渲染了,导致组件的数据没有来得及渲染。
问题举例
举例说明如下:
// topo.vue
created() {
this.getUserAndSysIcons();
},
methods: {
getUserAndSysIcons() {
const self = this;
// 用户图标
iconApi.getUserIcons().then(response => {
self.$store.dispatch('setUserIcons', response.data);
});
}
}
在topo.vue中created或者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监听,监听某一个数据的变化。我们都知道是,很容易监听组件中局部数据的变化。那么,这里怎么去监听state中的变化呢?于是有利用了computed计算属性。具体操作如下:
解决
在computed中写一个计算属性getUserIcons,返回状态管理中的userIcons。然后在watch中监听这个计算属性的变化,对modifyhost.vue中的userIcons重新赋值。
computed: {
getUserIcons() {
return this.$store.state.topo.userIcons;
}
},
watch: {
getUserIcons(val) {
this.userIcons = val;
}
}
最终效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vuex
# 监听state
# vue
# state
# 监听
# 变化
# vuex提交state&&实时监听state数据的改变方法
# vuex state中的数组变化监听实例
# vue3实现监听store中state状态变化的简单方法
# 为空
# 的是
# 就会
# 还没有
# 什么时候
# 会在
# 很容易
# 用了
# 再去
# 就想
# 前就
# 使用这个
# 遇到过
# 大家多多
# 具体操作
# 过程中
# 举例说明
# 也就是说
# 加载
# js
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
浅谈Javascript中的Label语句
Laravel怎么清理缓存_Laravel optimize clear命令详解
如何在IIS7上新建站点并设置安全权限?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何用美橙互联一键搭建多站合一网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
清除minerd进程的简单方法
如何快速搭建高效WAP手机网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
JS经典正则表达式笔试题汇总
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
大连网站制作公司哪家好一点,大连买房网站哪个好?
打造顶配客厅影院,这份100寸电视推荐名单请查收
微信小程序 闭包写法详细介绍
网站建设要注意的标准 促进网站用户好感度!
BootStrap整体框架之基础布局组件
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
C++时间戳转换成日期时间的步骤和示例代码
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
HTML 中动态设置元素 name 属性的正确语法详解
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
EditPlus中的正则表达式 实战(2)
如何实现建站之星域名转发设置?
LinuxShell函数封装方法_脚本复用设计思路【教程】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何用y主机助手快速搭建网站?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
浅谈redis在项目中的应用
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Android中AutoCompleteTextView自动提示
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
如何快速登录WAP自助建站平台?
如何在宝塔面板创建新站点?

