美文网首页程序员
在Vuex和组件内的视图更新问题

在Vuex和组件内的视图更新问题

作者: Young_Kind | 来源:发表于2018-06-30 15:36 被阅读48次

由于js的限制,vue无法进行监听数组;

  • 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue
  • 当你修改数组的长度时,例如: vm.items.length = newLength
  • 直接给对象赋值新属性

解决方式:
Vue.set( target, key, value )

测试代码:

Store的代码:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    TestArr: [1,2,5],
    TestObj:{   name:'YK'  }
  },
  getters: {
    TestArr_getters: state => {
      return state.TestArr
    }
  },
  mutations: {
    changeTestArr(state, obj) {
       //state.TestArr[2]=3 
        //上面是错误演示,会改变值,但视图不会更新,在组件内同理
        Vue.set(state.TestArr,2,3) //正确演示

        // state.TestObj.age=11 
       //上面是错误演示,会改变值,但视图不会更新,在组件内同理
        Vue.set(state.TestObj,'age',11)//正确演示
    }
  },
  actions: {
    changeTestArr_action(context){
      setTimeout(function () {
        context.commit('changeTestArr')
      }, 1000)
    }
  }
});

组件内的代码:

<template>
    <div>
              <p>state的值:{{$store.state.TestArr}}</p>
              <p>getterste的值:{{TestArr_getters}}</p>
            <p>TestObj的值:{{TestObj}}</p>
            <button @click="fun1">改变</button>
    </div>
</template>
<script>
  import {mapGetters,mapState} from 'vuex'
    export default {
      name: '',
      computed:{
        ...mapState(['TestObj']),
        ...mapGetters(['TestArr_getters']),
      },
      methods:{
        fun1(){
              this.$store.dispatch('changeTestArr_action')
        }
      }
    };
</script>

相关文章

  • 在Vuex和组件内的视图更新问题

    由于js的限制,vue无法进行监听数组; 当你利用索引直接设置一个项时,例如: vm.items[indexOfI...

  • vuex state 数据更新 vue组件mapState获取不

    问题 在vue组件内 通过commit 更新 vuex modules state 数据(obj),vue组件通过...

  • Vuex 添加对象属性 视图不更新

    问题 在给Vuex的对象添加属性时,申请computed的组件,对应的视图不会更新。 原因 因为Vuex只会跟踪所...

  • vue 视图不渲染问题总结

    vuex书写不规范导致组件视图不更新?在vuex中初始化一个对象,实际的值是嵌套对象,给vuex赋值是直接用obj...

  • vuex中的state绑定到组件内data不实时更新

    使用vuex中state状态关联到组件data的状态时 state更新了但date的数据更新 1.在组件内使用w...

  • Vuex 状态管理

    Vue组件间通信方式 Vuex核心概念和基本使用 购物车案例 模拟实现vuex 一、组件内的状态管理流程 状态管理...

  • 【Vuex】基础

    1.Vuex干什么用的 1.1存在的问题 多个组件共享状态时,必须实现: 多个视图依赖于同一状态。 来自不同视图的...

  • VUE-VUEX的使用

    安装vuex 在store.js页面引入 定义数据 暴露 vuex 实例化 组件内使用 注册 获取state里面的...

  • Vuex状态管理

    1.组件共用Store修改state更新到组件 2.原理图 3.代码 import Vuex from 'Vuex...

  • 参考element-ui的自定义Store

    基本框架:这是一个Vuex的组件级的解决方案 解决父子,兄弟组件的通信问题 解决Vuex的单例问题,因为Vuex是...

网友评论

    本文标题:在Vuex和组件内的视图更新问题

    本文链接:https://www.haomeiwen.com/subject/hcciyftx.html