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

@TOC
相信许多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官方文档.


文章作者: qiangqiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 qiangqiang !
评论
 上一篇
vs-code中用liveServer打开vue-cli打包后的html,模拟查看线上路径问题 vs-code中用liveServer打开vue-cli打包后的html,模拟查看线上路径问题
首先在扩展搜索liveServer下载安装之后右键html就会出现liveServer命令我用的vue-cli版本是3.2,为防止路径问题,在vue.config.js中修改publicPath为 module.exports = {
2019-05-13
本篇 
vuex中遇到的坑,vuex数据改变,组件中页面不渲染 vuex中遇到的坑,vuex数据改变,组件中页面不渲染
@TOC相信许多vuex新手都会遇到这样的问题: vuex数据更新后,插件中使用数据的地方没有更新 这样的代码 data() { return { tableData: this.$store.state.Adm
2019-05-06
  目录