javascript - 在动态组件中仅安装一次触发器
问题描述
在我的App.vue
我正在使用动态组件来渲染来自 Vuex 的动态组件
<component :is="$store.getters.getDynamicComponent"></component>
然后在我的Home.vue
<v-card @click="showDetails">
<v-card-title primary-title>
<div class="mb-0 text-truncate"> {{name}} </div>
</v-card-title>
</v-card>
import Details from '@/components/UI/Details';
export default {
name: 'Home',
methods: {
showDetails() {
console.log('Mount Dynamic Component');
this.$store.commit('SET_DYNAMIC_COMPONENT', Details);
}
}
}
然后在Details
组件上
export default {
name: 'Details',
mounted: {
console.log('This component has been mounted');
}
}
当我单击卡片时,安装的生命周期仅触发一次,我Home.vue
希望每次单击卡片时都会打印它
Mount Dynamic Component
和
This component has been mounted
解决方案
您可以在您的 vuex 状态中定义一个数字变量(即dynamicComponentKey
),它将作为key
动态组件工作,并在您的SET_DYNAMIC_COMPONENT
突变中增加它。
当密钥发生变化时,这应该会强制重新安装组件。
然后,在您的 App.vue 中:
<component :is="$store.getters.getDynamicComponent" :key="$store.getters.getDynamicComponentKey"></component>
推荐阅读
- mysql - 如何将 1 个表连接到另一个表并获取每个日期的计数结果
- python - 为什么NN在重复训练后不能得到一个确定的输出?
- java - 为什么我会收到这些找不到合适方法的错误?
- flutter - Flutter CustomScrollView 没有滚动全长
- javascript - 我尝试使用类名显示单选按钮的值
- c - 任意数量数字的平均值
- node.js - Typescript - 如何在 node.js 上声明全局变量
- loadrunner - 发送我的令牌值以进行身份验证时遇到问题
- python - python如何传递Class/Instance中的第一个变量
- vue.js - Vue CLI quesar 插件 q-image 不显示图像