当前位置: 首页 > 知识库问答 >
问题:

vue3+pinia使用的时候,watch疑惑?

易阳云
2024-03-22

vue3+pinia使用的时候,并没有对state赋值,watch为什么还能监听到变化?
如果不用mapState,第一次也监听不到,问题就在computedmapState,为什么会出现这种情况?

//stroreimport { defineStore } from "pinia"const useTestStore = defineStore({    id: 'testStore',    state() {        return {            obj: {                name: '张三'            }        }       },})export default useTestStore
import useTestStore from "./store"export default {  computed: {    ...mapState(useTestStore, ['obj'])  },  watch: {    obj: {      handler(newValue, oldValue) {        //这里为什么会执行?        console.log('sss', JSON.stringify(newValue), JSON.stringify(oldValue))      },      deep: true    }  },}

共有1个答案

夏侯鹏
2024-03-22

Pinia的store中的state是通过返回一个函数来初始化的,这个函数返回的对象是响应式的。当你在组件中使用watch来监听store的状态时,实际上是在监听这个响应式对象的变化。因为这个对象是响应式的,所以当它的任何属性发生变化时,Vue的响应式系统会自动触发watch的回调函数。

 类似资料:
  • 引入方式 store.js main.js 这么使用正确吗? 让store = reactive({})?

  • 这两个地方的上下文有什么特别的吗?为什么第一种写法会报错呢。提示:

  • 大佬们,由于后台返回的数据,是实时的一条数据,(每发送一条数据都是新数据而前面发送的数据就将作为旧数据)我需要将旧数据也显示出来,但是当我将旧数据和新数据赋值的时候,旧数据前面会出现null,请问如何将出现null的时候,旧数据不会被显示出来?或者说有什么其他办法不用watch监听也可以实时的收到新旧数据?

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 这是模型的代码 这是文件所在的位置 加载模型的时候,控制台报这个错误 麻烦各位大佬,哪里出错了

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的