provide/inject @vue/composition-api 没有更新

provide/inject @vue/composition-api not updating

请注意,我使用的不是 vue 3,而是 @vue/composition-api vue 2。

我的路由器有以下配置:

{
  path: `/:country(${
    Object.keys(config.countries).join('|')
  })?/:locale(${
    Object.keys(config.languages).join('|')
  })?`,
  props:true,
  component: Root,

我的根组件有:

setup(props) {
  const loc=ref(props.locale);
  watch(()=>props.locale,
  (current)=>{
    // eslint-disable-next-line no-console
    console.log('in root watch',current);
    loc.value=current
  }
  )
  provide('locale', loc);
},

当更改路由时,我确实收到日志说它已更改但是在我使用注入的任何组件中它都没有更新:

setup(){
  const locale = inject('locale')
  console.log('locale from inject:',locale.value)
  watch(
    () => locale,
    (...args)=>{
      //never logs
      console.log('args:',args)
    }
  );
},

我watch用错了,在child我应该做的:

setup(){
  const locale = inject('locale')
  watch(
    locale,//not a function but an observable
    (...args)=>{
      //works
      console.log('args:',args)
    }
  );
},