Vueルーターコンポーネントのマルチレイヤー名前付きビューを操作する方法

一人っ子政策では、子孫は1人だけなので、「子」と呼んでもかまいません。
ただし、複数の出産を開始すると、複数の子孫が生まれます。すべての子孫に「子」と呼ぶと、誰もいません。
彼らが子孫の命名であるを知ることができます

同様に、ビューがルーティングでビューを設定する場合でも、それらはすべてデフォルトと呼ばれるため安全です
が、ビューが複数のビューを設定する場合は、name属性をビューに追加する必要があります。

<router-view></router-view>
<router-view name="a"></router-view>
<router-view name="b"></router-view>

対照的に、コンポーネントをコンポーネントに変更して、どのビューがどのコンポーネントをレンダリングするかを示す必要があります

{
    
    
	path: '/',
	// component: Foo,
	// components 优先级较高, 同时存在 component 会被忽略
	components: {
    
    
		default: Foo,
		a: Bar,
		b: Baz
	}
}



では、複数のレイヤーと複数のビューがある場合、どのように操作しますか?
実際、想像したほど複雑はありません。

new VueRouter({
    
    
	routes: [{
    
    
		path: "/一级路径",
		component: 一级组件,
		children: [{
    
    
			path: "二级路径",
			components: {
    
    
				default: 二级组件_1,
				view1: 二级组件_2,
				view2: 二级组件_2,
			},
			children: [{
    
    
				path: "三级路径_1",
				components: {
    
    
					default: 三级组件_1,
					view1: 三级组件_2,
					view2: 三级组件_3,
				},
			}],
		}],
	}]
});
<!--一级组件-->
<router-view></router-view>
<router-view name="view1"></router-view>
<router-view name="view2"></router-view>


<!--二级组件_1-->
<router-view></router-view>
<router-view name="view1"></router-view>


<!--二级组件_2-->
<router-view></router-view>
<router-view name="view1"></router-view>
<router-view name="view2"></router-view>

ケース分析

これで、一致するパスは「/第1レベルのパス/ 2番目のレベルのパス/ 3番目のレベルのパス_1」になります。

第1レベルのパスが一致し、第1レベルのコンポーネントがレンダリングされます

<!--一级组件渲染结果-->
<一级组件>
	<router-view></router-view>
	<router-view name="view1"></router-view>
	<router-view name="view2"></router-view>
</一级组件>

デフォルトに従って、セカンダリパスが一致します:secondary component_1、view1:secondary component_2、view2:secondary component_2

<!--二级组件渲染结果-->
<一级组件>
	<二级组件_1>
		<router-view></router-view>
		<router-view name="view1"></router-view>
	</二级组件_1>
	<二级组件_2>
		<router-view></router-view>
		<router-view name="view1"></router-view>
		<router-view name="view2"></router-view>
	</二级组件_2>
	<二级组件_2>
		<router-view></router-view>
		<router-view name="view1"></router-view>
		<router-view name="view2"></router-view>
	</二级组件_2>
</一级组件>

3レベルのpath_1は、デフォルトに従って一致します:3レベルのcomponent_1、view1:3レベルのcomponent_2、view2:3レベルのcomponent_3、
最終的にレンダリングされる構造は次のとおりです。

<!--三级组件渲染结果-->
<一级组件>
	<二级组件_1>
		<三级组件_1 />
		<三级组件_2 />
	</二级组件_1>
	<二级组件_2>
		<三级组件_1 />
		<三级组件_2 />
		<三级组件_3 />
	</二级组件_2>
	<二级组件_2>
		<三级组件_1 />
		<三级组件_2 />
		<三级组件_3 />
	</二级组件_2>
</一级组件>

これまでのところ、いくつかの結論を引き出すことができます

  • それらが同じ起源である限り、ビューがいくつあっても、深さ(レベル)で分割できます。

前の例と同様に、第1レベルのコンポーネントは第1レベルのビューに対応し、第1レベルのコンポーネントには第2レベルのビューが直接含まれます。第
1レベルのビューは、第1レベルのコンポーネントをレンダリングし、第2レベルのコンポーネントは第2レベルのビューをレンダリングします。ビューは、第2レベルのコンポーネントをレンダリングします。

  • ビューは同じ名前を持つことができ、再利用できます
  • 同じレイヤーの同じ名前が再利用され、異なるレイヤーの同じ名前は影響しません
  • コンポーネントビューのコンポーネントを提供すると表示されます。コンポーネントが提供されていない場合、エラーは報告されず、空としてのみレンダリングされます。
  • コンポーネントの範囲はレイヤー全体です

path: "third-level path_1"のように、次の行のコンポーネント
は3番目のレベルにあるため設定されているため、2番目のレベルのcomponent_1と2番目のレベルのcomponent_2の3番目のレベルのビューに有効です。

終わり

おすすめ

転載: blog.csdn.net/u013970232/article/details/112600910