Vue.js Vue:如何根据路由器视图组件为布局组件提供动态道具';s数据
我想要一个布局组件,其中包含一个标题组件和一个Vue.js Vue:如何根据路由器视图组件为布局组件提供动态道具';s数据,vue.js,vue-component,vue-router,Vue.js,Vue Component,Vue Router,我想要一个布局组件,其中包含一个标题组件和一个,但是标题组件应该根据路由器视图组件的数据接收不同的动态道具 我不知道布局架构是如何实现的:要么使用嵌套路由,要么使用插槽并通过路由的元字段传递布局名称 因此,标题组件应该从视图组件以动态道具的形式传递,比如Home.vue:如果我们转到route/Home,路由器视图将是Home.vue,在Home.vue中,我们有一个反应数据字段(即滚动下降)和传递给标题组件的道具(即主题)应取决于此数据字段的值(scrolledDown) 我能想到的最简单的方
,但是标题组件应该根据路由器视图组件的数据接收不同的动态道具
我不知道布局架构是如何实现的:要么使用嵌套路由,要么使用插槽并通过路由的元字段传递布局名称
因此,标题组件应该从视图组件以动态道具的形式传递,比如Home.vue:如果我们转到route/Home,路由器视图将是Home.vue,在Home.vue中,我们有一个反应数据字段(即滚动下降
)和传递给标题组件的道具(即主题)应取决于此数据字段的值(scrolledDown
)
我能想到的最简单的方法是使用本地状态管理(vuex或其他什么),这样视图组件(即Home.vue)可以存储反应数据,布局组件可以获取它并将其作为道具传递给标题组件。但也许有更好的方法来实现这一点
MainHeader.vue:
<template>
<div :class="`header--${theme}`">...</div>
</template>
<script>
export default {
props: ["theme"]
}
</script>
...
导出默认值{
道具:[“主题”]
}
Layout.vue:
<template>
<div>
<main-header />
<router-view />
</div>
</template>
<script>
import MainHeader from "../MainHeader";
export default {
components: { MainHeader }
}
</script>
<template>
<div>
<main-header />
<slot />
</div>
</template>
<script>
import MainHeader from "../MainHeader";
export default {
components: { MainHeader }
}
</script>
从“./MainHeader”导入MainHeader;
导出默认值{
组件:{MainHeader}
}
或者:
App.vue:
<template>
<component :is="layout">
<router-view />
</component>
</template>
// script with `layout` data prop and layout component imports
//带有'layout'数据道具和布局组件导入的脚本
Layout.vue:
<template>
<div>
<main-header />
<router-view />
</div>
</template>
<script>
import MainHeader from "../MainHeader";
export default {
components: { MainHeader }
}
</script>
<template>
<div>
<main-header />
<slot />
</div>
</template>
<script>
import MainHeader from "../MainHeader";
export default {
components: { MainHeader }
}
</script>
从“./MainHeader”导入MainHeader;
导出默认值{
组件:{MainHeader}
}
Home.vue:
<template>
<div>...</div>
</template>
<script>
export default {
computed: {
scrolledDown() { ... }
}
}
</script>
...
导出默认值{
计算:{
scrolledDown(){…}
}
}
Vuex的用途正是您所需要的—兄弟组件之间或不是直接父子耦合的组件之间共享数据。是的,我认为您是对的,本地状态是最佳选择。另一个好处是松耦合本地状态
引用当前组件的数据部分。Vuex实际上维护了一个可由多个组件使用的共享状态。实际上本地状态
主要指的是应用程序的状态,该状态不会在服务器端保存;)->这是双重含义,组件数据部分中的数据也被称为(本地|组件)状态