Vue.js 使Vue中的只读字段可见?

Vue.js 使Vue中的只读字段可见?,vue.js,Vue.js,我正在公开一个反映登录状态的Vue observable: // auth.js const user = Vue.observable({ displayName: '...', isSignedIn: null // Boolean }); ... export { user }; 虽然名称是observable,但我认为任何导入user的人也可以修改字段。如何防止这种情况发生?您可以先冻结对象,然后再使其发生反应,如下面的示例所示 const user = Vue.ob

我正在公开一个反映登录状态的Vue observable:

// auth.js
const user = Vue.observable({
  displayName: '...',
  isSignedIn: null    // Boolean
});

...

export { user };

虽然名称是
observable
,但我认为任何导入
user
的人也可以修改字段。如何防止这种情况发生?

您可以先冻结对象,然后再使其发生反应,如下面的示例所示

const user = Vue.observable(
        Object.freeze({
          displayName: '...',
          isSignedIn: true   // Boolean
        })
      );     

问题是为什么要使用它,更好地暴露非反应对象。检查Vue.observable定义

并不是对您的问题的回答,但不要依赖客户端JavaScript来实现安全性,只用于接口管理。在访问数据时随时检查服务器的权限。虽然名称是可观察的,但我认为任何导入用户的人也可以修改字段。我怎样才能防止这种情况发生为什么这是一个问题?还有谁需要导入它?@Dan这不是客户端权限的问题。只是我的“auth.js”和其余代码之间的接口问题。@EstusFlask你说得对。这不是一个真正的问题(所有代码都来自我)。我只是在重新学习Vue,试着看看我会继续使用什么模式。尝试了上述代码的ES6 getter,但无法编译。我认为,这是为了显示意图。而且。。。因为“observable”有这个名字,我有点期待其他模块甚至不能更改字段。也许我会删除这个问题。不,你不必担心。根据我的经验,JS中过度的封装根本不值得。由于isSignedIn应该在某个点设置,所以有一种方法可以修改它,不管怎样。如果担心自己代码中的意外误用,可以使用类型(TS)并将字段标记为只读。