vue.js - 单个文件组件 - 在从导航栏更改值时重新安装组件
问题描述
这是我的 vuejs 应用程序的结构。
<template>
<div class="page-body-wrapper">
<Sidebar/>
<div class="main-panel">
<Header/>
<div class="content-wrapper">
<router-view></router-view>
</div>
</div>
</div>
</template>
<script>
import Header from '../header/header';
import Sidebar from '../sidebar/sidebar';
export default {
name: 'Layout',
components: {
Header,
Sidebar
}
}
</script>
在内部呈现的所有路由中<router-view>
,我正在调用基于存储变量“myValue”的各种函数和 api 调用。而且,我的<Header/>
组件中有一个下拉列表(这对所有路线都很常见)。每当我从标题的下拉列表中选择一个值时,存储变量“myValue”就会发生变化。<router-view>
现在,每当存储变量“myValue”发生变化时,我都需要重新安装在内部呈现的任何组件。使用 watch 将是最后的选择,因为我将不得不在许多组件中做同样的事情。我不能使用计算,因为我必须在“创建”或“安装”挂钩中获取所有数据。<router-view>
当存储变量更改时,是否有任何选项可以重新安装整个?注意:我使用 vuex 进行状态管理。
解决方案
只需传递一个key
to <router-view :key="myValue"></router-view>
,或者在你的情况下<router-view :key="$store.state.myValue"></router-view>
。
另请查看此答案。
推荐阅读
- java - 我无法在 java 中完全解析 JSON
- c++ - Range-v3,如何单独访问范围值的范围(group_by 函数)
- reactjs - 将 Solid and Light Font Awesome Pro 添加到 React 站点
- redirect - 如何在 Vercel 上托管的 Gatsby 网站中进行 301 重定向?
- php - Laravel queryBuilder,一种通过 group by 保持最新日期值的好方法
- sql-server - 文本被截断或目标代码页中的一个或多个字符不匹配 - 来自 SQL Server
- c# - getAttribute("value") 返回 null
- angular - Windows 讲述人无法识别 AriaDescriber.describe() 方法描述
- bash - Shell脚本:复制一个文件夹,但只创建具有正确名称和时间戳的空文件?
- teradata - 多台显示器上的 Teradata SQL Assistant/Studio