从可组合项访问主要组件上的数据 - VueJS 3

Access data on main component from composable - VueJS 3

我想知道从可组合方法访问我的 setup 函数上的数据的最佳方法是什么...如果可能的话(也是一个好的做法)。

例如,在我的主要组件上,我会有一个反应式 data 对象,其中包含该组件中使用的所有变量...但并不是所有的变量都会被我的可组合项使用。

这是我正在尝试做的事情的示例(有点像可组合模型)...

假设我有一个 useDrivers 可组合项,并且想使用它的 saveDriver 方法,如下所示:

// all shortened for readability
import useDrivers from "@composables/use-drivers";
export default {
  setup() {
    const { saveDriver } = useDrivers();

    const data= reactive({
      foo: null,
      bar: null,
      accident: { ... },
      driver: { ... },
      anotherUsedVar: null,
    });

    // instead of doing something like this:
    saveDriver(driver, accident.id, anotherUsedVar);

    // or even worse:
    saveDriver(driver.name, driver.gender, driver.license, accident.id, anotherUserVar);

    // Could I, somehow, access my DATA const from inside my method?
    // but, again, without having to pass whatever amount of parameters
    saveDriver();
  }
}

如果数据是静态的,它可以是单个上下文对象:

const context = { name: driver.name, ... };
saveDriver(context);

如果数据应该在 saveDriver 内保持反应性,则可以传递计算的引用:

const context = computed(() => ({ name: driver.name, ... });
saveDriver(context);

然后需要在 saveDriver 内处理数据,通常组成 API - computedwatch