vue3怎么创建全局方法?app.config.globalProperties.$loadData()这样可不可以?provide 怎么用?
时间: 2024-10-25 20:07:55 浏览: 17
Vue中的this.$options.data()和this.$data用法说明
在 Vue3 中,你可以通过修改 `App` 组件的实例属性或者使用 `Vue.prototype` 来创建全局方法。`app.config.globalProperties` 是 Vue 3 提供的一种更现代的方式来添加全局属性,包括方法。
例如,如果你想创建一个全局的 `$loadData` 方法,可以这样做:
```javascript
// 在 main.js 或者其他入口文件中
import { createApp } from 'vue'
import App from './App.vue'
const app = createApp(App)
// 添加全局方法到 globalProperties
app.config.globalProperties.$loadData = function (params) {
// 这里是你自定义的 $loadData 方法实现
}
app.mount('#app')
```
这种方式可以直接在任何组件中使用 `this.$loadData()` 调用这个全局方法。
然而,如果你需要在所有组件实例上共享数据或方法,通常会使用 `provide` 和 `inject` 对象。`provide` 是从父组件提供数据给子组件,而子组件需要通过 `inject` 注入这些数据。如果想通过 `provide` 提供方法,可以这样做:
```javascript
// 父组件
export default {
provide() {
return {
loadData: this.$loadData
}
},
methods: {
$loadData() {...}
}
}
// 子组件
import { inject } from 'vue'
export default {
setup() {
const loadData = inject('loadData') // 使用注入获取到的方法
// ...
}
}
```
这样,`$loadData` 就成为了一个可以在整个应用内访问的全局方法了。
阅读全文