在实际业务中,比如网络异常,服务器错误这种通用的弹窗,是需要在每个页面上都有准备的,但是在uniapp中,app.vue只能提供js与wxss的公共方法,并不能直接引用。那么我们在下面将要讲到如何用vue-inset-loader+vuex实现全局组件。
需要在任何一个页面中使用组件,就必须先要创建一个组件
<template>
<view>
<button :disabled="disabled" :class="classArr" @tap="onclick" v-if="isShow">{{text}}</button>
</view>
</template>
<script>
import { mapState } from "vuex";
export default {
name: "custom-button",
props: {
text: String,
classArr: Array,
disabled: Boolean
},
computed: mapState(["isShow"]),
data() {
return {
};
},
watch: {
errorCode : {
immediate: true,
handler(newVal, oldVal) {
console.log(newVal, oldVal)
}
},
},
methods: {
}
}
</script>
<style></style>
组件已创建完毕
import GlobalButton from '@/components/common-modal/button';
Vue.component('GlobalButton ',GlobalButton )
cnpm i vue-inset-loader --save-dev
在vue.config.js中,没有文件就新建
const path = require('path')
module.exports = {
configureWebpack: {
module: {
rules: [{
test: /.vue$/,
use: {
loader: path.resolve(__dirname, "./node_modules/vue-inset-loader")
},
}]
}
},
}
在pages.json中(注意需要在最前面配置,rootEle是view)
"insetLoader": {
"config":{
"confirm": "<GlobalModal ref='confirm'></GlobalModal>"
},
// 全局配置
"label":["confirm"],
"rootEle":"view"
},