Vue
component
component 是什么 动态组件,通过:is 来决定哪个组件需要被渲染 component 的使用 动态组件 props/$emit 组件通信 provide/inject 组件通信 keep-alive 缓存组件 index.vue a.vue b.vue 参考 component
component 是什么 动态组件,通过:is 来决定哪个组件需要被渲染 component 的使用 动态组件 props/$emit 组件通信 provide/inject 组件通信 keep-alive 缓存组件 index.vue a.vue b.vue 参考 component
动态组件,通过:is 来决定哪个组件需要被渲染
<template>
<div>
<button @click="currentComponent = !currentComponent">check</button>
<keep-alive>
<component :is="currentComponent ? 'A' : 'B'" :propData="currentComponent ? propData1 : propData2" @checkToA="checkToA"></component>
</keep-alive>
</div>
</template>
<script>
import Vue from "vue";
export default {
provide: {
index: Vue.observable({ name: "hello world" })
},
components: {
A: () => import("@/components/a"),
B: () => import("@/components/b")
},
name: "",
data() {
return {
propData1: {
name: "koa"
},
propData2: {
name: "egg"
},
currentComponent: false
};
},
methods: {
checkToA(data) {
console.log("我是a的data", data);
}
},
watch: {},
created() {},
updated() {},
mounted() {}
};
</script>
<style scoped lang="less"></style>
<template>
<div>A</div>
</template>
<script>
export default {
inject: ["index"],
props: {
propData: Object
},
components: {},
name: "",
data() {
return {};
},
methods: {},
created() {
console.log("a", "created");
console.log(this.index);
this.$emit("checkToA", "checkToA");
},
mounted() {
console.log("a", "mounted");
},
activated() {
console.log("a", "activated");
},
deactivated() {
console.log("a", "deactivated");
}
};
</script>
<style scoped lang="less"></style>
<template>
<div>B</div>
</template>
<script>
export default {
props: {
propData: Object
},
components: {},
name: "",
data() {
return {};
},
methods: {},
created() {},
mounted() {}
};
</script>
<style scoped lang="less"></style>
暂无评论
确认操作
请再次确认编辑图片
待上传图片 (剩余 0 张)
项目详情
确认评论邮箱
邀请制评论