vue2.0怎么把一个已渲染的组件,渲染到一个弹窗上面?要保持组件所有状态和数据?

vue2.0怎么把一个已渲染的组件,渲染到一个弹窗上面?要保持组件所有状态和数据!
因为有很多组件需要这样做,不可能为每一个都写一个方法或者props传入。有没有办法把组件的clone一个,保持状态的状态和数据,重新渲染到一个弹窗上面呢?

阅读 2.5k
5 个回答

已渲染的组件用ref拿到再给其他的地方使用就可以了

写一个弹窗组件,将所有可能展示的‘已渲染的组件’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>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏