小编Tyl*_*ult的帖子

如何将响应式数据传递给 Vue 3 中的可组合项

是否可以在 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 …

typescript vue.js vue-reactivity vuejs3

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

typescript ×1

vue-reactivity ×1

vue.js ×1

vuejs3 ×1