You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Svelte子组件的select值绑定传递到父组件变量

Svelte子组件select值绑定到父组件的实现方法

核心原因:自定义组件不会自动同步内部原生表单元素的值,需要手动在子组件内完成透传绑定,才能让父组件的bind:value生效。

子组件 Form.svelte 改造

首先导出value作为组件入参,同时将内部select的选中值和该入参双向绑定:

<script>
  // 声明接收父组件传递的value参数
  export let value;
</script>

<!-- 将原生select的值和组件的value参数双向绑定 -->
<select bind:value={value}>
  <option value="1">选项1</option>
  <option value="2">选项2</option>
  <option value="3">选项3</option>
</select>

父组件 App.svelte 用法

父组件的绑定逻辑不需要调整,直接使用之前的写法即可正常同步值:

<script>
  import Form from './Form.svelte';
  // 要绑定的父组件变量
  let active = '1';
</script>

<Form bind:value={active} />
<p>当前选中值:{active}</p>

可选实现:自定义事件传递

如果不需要双向绑定,也可以通过事件派发的方式手动同步值:

  • 子组件监听select的change事件,向外派发选中值:
<script>
  import { createEventDispatcher } from 'svelte';
  const dispatch = createEventDispatcher();
</script>

<select on:change={e => dispatch('selectChange', e.target.value)}>
  <!-- 选项内容 -->
</select>
  • 父组件监听自定义事件更新变量:
<Form on:selectChange={e => active = e.detail} />

内容的提问来源于stack exchange,提问作者benman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:24:03