为什么通过ref声明响应式变量页面不对应渲染?
老师你好,
我不用toRefs,直接声明或使用ref声明获取全局数据,全局数据有修改成功(控制台打印是修改后的lee),但页面显示的数据却没变。
代码:
<template> <div>{{name}}</div> <button @click='handleClick'>修改</button> </template> <script> import { ref } from 'vue'; import { useStore } from 'vuex'; export default { name: "App", setup(){ const store = useStore(); // 方式一:直接获取全局数据name const name = store.state.name; // 方式二:声明为ref获取,也不行,页面没修改 // const name = ref(store.state.name); const handleClick = () => { store.commit('changeName','lee'); } return { name, handleClick }; } }; </script> <style lang="scss"> </style>
store/index.js
import { createStore } from 'vuex' export default createStore({ state: { name: 'dell' }, getters: { }, mutations: { changeName(state, str) { state.name = str; console.log(state.name); // 全局数据有修改,但页面没变 } }, actions: { }, modules: { } })
结果:
问题一:全局数据是否默认就是响应式数据?
问题二:不用toRef解构,如何让页面上的值同步变化?
26
收起
正在回答 回答被采纳积分+1
2回答
慕的地9440514
2023-06-27 16:54:21
过了很久博主应该学完了,这里解释一下给后面的同学看下,用ref包裹的话拿到的是name = name:{value:'dell'}
存储仓库本身是响应式的直接可使用,但这里ref包裹返回出去的是这里的name就不是仓库里的nam了,所以直接修改name.value='什么什么'就能看到效果了
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星