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>
6 回答5.3k 阅读✓ 已解决
9 回答9.5k 阅读
5 回答3.7k 阅读✓ 已解决
3 回答10.6k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.1k 阅读
4 回答7.5k 阅读
已渲染的组件用ref拿到再给其他的地方使用就可以了