vue 请求回数据存放到vuex中,数据请求回来vuex中数据改变,但是页面数据没有动

解决方法 强制页面刷新 本质上是强制执行以下所有的h函数

1、加个this.$forceUpdate();

2、location.reload()

3、this.$router.go(0)

4、console.log(res); //打印一下,没错就是打印一下 数据也是动了!


问题所在:Vue的template通过babel会转换成h函数
你的数据没更新代表h函数没有添加到订阅器里面
this.$foreUpdate()和location.reload() 其实就是强制这些h函数再执行一遍


Vue原理就是 你写的template模板 里面用到的变量以及一些函数  最终经过babel的解析变成h函数
这个h函数开始的时候会执行一次、然后在Vue2经过Object.defineProperty get收集这个函数用到的变量  set 重新执行订阅器。。。。。

在Vue2 中增加和删除属性不会触发 get 和set。。。 vue3就好了。。。Vue3的Proxy可以监听到删除 添加

也不是没有别的方法,把异步请求直接封装在vuex中 一般是Action→到 mutaion→再到state。还有 Vuex的state要给初始值。不然数据也不会同步 也不是响应式的。

你可能感兴趣的:(vue.js,javascript,前端)