Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js,合成API,“;“混合”;生命周期挂钩_Vue.js_Hook_Mixins_Vuejs3_Vue Composition Api - Fatal编程技术网

Vue.js,合成API,“;“混合”;生命周期挂钩

Vue.js,合成API,“;“混合”;生命周期挂钩,vue.js,hook,mixins,vuejs3,vue-composition-api,Vue.js,Hook,Mixins,Vuejs3,Vue Composition Api,我一直在四处寻找(但我找不到)以下问题的答案 在Vue 2.x中,可以将mixins用于生命周期挂钩,例如:我可以使用 export default { created() { console.log('test'); } } 然后,在组件中,执行以下操作: import mixins from "../misc/mixins"; export default { name: "My component", mixins: [m

我一直在四处寻找(但我找不到)以下问题的答案

在Vue 2.x中,可以将mixins用于生命周期挂钩,例如:我可以使用

export default {
  created() {
    console.log('test');
  }
}
然后,在组件中,执行以下操作:

import mixins from "../misc/mixins";

export default {
  name: "My component",
  mixins: [mixins],
  created() {
    console.log('Another test');
  }
}
如果我运行“我的组件”,我将同时进入控制台的“另一个测试”和“测试”。我找不到与CompositionAPI类似的方法(当然,我可以在从另一个文件导入的“onMounted”函数中执行,但这并不优雅)

有办法吗


谢谢

使用合成API,您必须导入所需的生命周期。带列表的文档:

组件.vue

现在只需导入它并执行

组件.vue

然后

import { useDemoLifecycles } from './demoLifecycles'
此外,如果您希望从该文件中获取引用或其他数据,则

const { a, b } = useDemoLifecycles() 

请注意,实际上在我的示例中,Vue的“魔力”并不多,就像Mixin一样。这几乎是纯JS的东西,而不是特定于Vue的代码。因此,它实际上比旧的选项API+混合更简单。

非常感谢!伟大而详细的回答!
<script>
import useDemoLifecycles from './demoLifecycles.js'

export default {
  setup(props) {
    useDemoLifecycles()

    return {};
  },
}
</script>
<script setup>
import useDemoLifecycles from './demoLifecycles.js'
useDemoLifecycles()
</script>
export const useDemoLifecycles = () => { console.log('code here') }
import { useDemoLifecycles } from './demoLifecycles'
const { a, b } = useDemoLifecycles()