Vue3如何访问对象的_value属性 解决computed数组取值undefined问题
问题核心原因
computed返回值是ref类型的包装对象,你看到的_value属于Vue的内部私有属性,本身就不允许开发者直接调用,私有属性加下划线前缀就是框架用来标识「非公开API、不要主动访问」的规范。你直接把tools包装对象传给map方法,自然无法提取到内部数组里的id字段。
正确语法
要获取ref对象包裹的原始值,调用它的公开属性.value即可:
setup() { const store = useStore(); const tools = computed(() => store.state.skill.tools); // 其他业务逻辑 // 新增.value获取computed内部存储的真实数组 store.commit('stateName/mutation', { key: map(tools.value, 'id') }); }
你提到的techstack同样属于ref类型的包装对象,要访问内部存储的数组,使用techstack.value即可。
注意事项
- 所有
ref、computed返回的包装对象,都需要通过.value访问内部存储的原始值 - 永远不要主动调用
__v_开头、单下划线开头的Vue内部属性,这类属性不属于公开API,版本迭代时可能会随时调整,依赖内部属性会导致代码兼容性极差 - 如果你使用的是Pinia替代Vuex,可以直接用官方提供的
storeToRefs工具解构state字段,效果和手动写computed完全一致,访问时同样需要加.value
内容的提问来源于stack exchange,提问作者djrtb
相关产品推荐
相关产品推荐

