vuex中遇到的坑,vuex数据改变,组件中页面不渲染

21 篇文章 0 订阅
1 篇文章 0 订阅

vuex数据改变,组件中页面不渲染


相信许多vuex新手都会遇到这样的问题:

  • vuex数据更新后,插件中使用数据的地方没有更新

这样的代码

data() {
    return {
      tableData: this.$store.state.AdminInfo
    };
  }

然后在 template 中使用 tableData

<el-table :data="tableData" class="tablePst">
   	<el-table-column label="登录名" prop="loginname"></el-table-column>
   	<el-table-column label="真实姓名" prop="realname"></el-table-column>
</el-table>

这样的话,就会出现数据改变不渲染的问题

问题

要解决问题,就得理解vue生命周期,页面加载前 tableData 获取 store 里的值赋给自己,这样 tableData 只有一初始值,后续vuex中状态发生改变,并不会再次赋值给 tableData ,除非页面刷新重新加载,组件生命周期重新开始,才能拿到最新的值

解决

1.去掉组件中 tableData 的状态,在模板中直接使用 $store.state.AdminInfo 这样就能随时拿到最新的状态值了

<el-table :data="$store.state.AdminInfo" class="tablePst">
   	<el-table-column label="登录名" prop="loginname"></el-table-column>
   	<el-table-column label="真实姓名" prop="realname"></el-table-column>
</el-table>

2.使用mapState,把vuex中的状态暴露给组件,再使用,具体见文档 vuex mapState官方文档.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值