首页 > 解决方案 > 从组件和插槽中的组件传递道具

问题描述

响应式 NavBar 组件使用如下 NavLink 组件:

<script>
  import NavBar from './nav/NavBar.svelte';
  import NavLink from './nav/NavLink.svelte';
  let barsMenu = false;
</script>

<NavBar logo="LOGO" bind:barsMenu={barsMenu}>
  <NavLink text="About" barsMenu={barsMenu}></NavLink>
  <NavLink text="Contact" barsMenu={barsMenu}></NavLink>
</NavBar>

NavLink 组件需要 barMenu 属性。NavLink 组件是 NavBar 插槽的一部分,如下所示:

<script>
  export let logo = '';
  export let barsMenu = false;
</script>

<div class="navbar" class:responsive="{barsMenu}">
  <a class="logo" href="javascript:;">{logo}</a>
  <slot></slot>
  <a class="bars" href="...." on:click="{() => barsMenu = !barsMenu}">
    <i class="fa fa-bars"></i>
  </a>
</div>  

NavBar 组件是否可以将 barMenu 道具直接从插槽传递到 NavLink 组件?

标签: svelte

解决方案


slot标签中传递道具:

<slot barsMenu={ barsMenu }></slot>

然后let:在父标签中使用指令:

<NavBar logo="LOGO" let:barsMenu={ barsMenu }>

查看文档


推荐阅读