vue2.0怎么把一个已渲染的组件,渲染到一个弹窗上面?要保持组件所有状态和数据!
因为有很多组件需要这样做,不可能为每一个都写一个方法或者props传入。有没有办法把组件的clone一个,保持状态的状态和数据,重新渲染到一个弹窗上面呢?
vue2.0怎么把一个已渲染的组件,渲染到一个弹窗上面?要保持组件所有状态和数据!
因为有很多组件需要这样做,不可能为每一个都写一个方法或者props传入。有没有办法把组件的clone一个,保持状态的状态和数据,重新渲染到一个弹窗上面呢?
写一个弹窗组件,将所有可能展示的‘已渲染的组件’import进去,根据弹窗组件open传入的参数区分展示哪个‘已渲染的组件’,每个需要的弹窗的地方import这个弹窗组件,调用弹窗组件的open方法并传入参数。没有更省事的办法。
<template>
<div>
<button @click="showModal = true">Open Modal</button>
<keep-alive>
<component :is="currentComponent" v-if="!showModal"></component>
</keep-alive>
<modal v-if="showModal">
<keep-alive>
<component :is="currentComponent"></component>
</keep-alive>
</modal>
</div>
</template>
<script>
import Modal from './Modal.vue'
import YourComponent from './YourComponent.vue'
export default {
components: {
Modal,
YourComponent
},
data() {
return {
showModal: false,
currentComponent: 'YourComponent'
}
}
}
</script>
13 回答13k 阅读
8 回答2.7k 阅读
2 回答5.2k 阅读✓ 已解决
7 回答2.1k 阅读
5 回答1.3k 阅读
9 回答1.7k 阅读✓ 已解决
6 回答1.6k 阅读
已渲染的组件用ref拿到再给其他的地方使用就可以了