是否可以在 Vue 中声明一个响应式对象,然后将该对象的成员传递给可组合对象,同时保留响应性?
例如:
我声明一个“状态”类型:
type State = { myObjectList: Array<MyObject> }
Run Code Online (Sandbox Code Playgroud)
然后在我的组件中初始化我的状态:
const state = reactive<State>{( myObjectList: new Array<MyObject>() )}
Run Code Online (Sandbox Code Playgroud)
state.myObjectList在组件挂载时通过 API 调用填充的位置
我的问题是,是否可以传递state.myObjectList给可组合项,并且该可组合项是否知道对 内部元素所做的更改state.myObjectList?
即有一个可组合项,例如:
export default function useSimpleCalculator(list: Array<MyObject>){
const dynamicSumValue = computed(():number => {
let sum = 0;
list.forEach(el => { sum += el.someValueThatChanges });
return sum;
});
return { dynamicSumValue }
}
Run Code Online (Sandbox Code Playgroud)
然后使用该可组合项,例如:
const {dynamicSumValue} = useSimpleCalculator(state.myObjectList);
Run Code Online (Sandbox Code Playgroud)
并dynamicSumValue随着内部元素的更改而更新state.myObjectList
我尝试像上面那样实现,但是当我传递对象上的任何属性时state,它会在可组合项中失去其反应性。
将refs 传递给可组合项似乎可行(即const val …