Skip to main content
Svelte 基础
介绍
响应式
属性
逻辑
事件
绑定
类和样式
Actions
过渡动画
Svelte 进阶
高级响应性
复用内容
Motion
高级绑定
高级过渡效果
Context API
特殊元素
<script module>
后续步骤
SvelteKit 基础
介绍
路由
加载数据
请求头和 Cookie
共享模块
表单
API 路由
$app/state
错误和重定向
SvelteKit 进阶
钩子函数
页面选项
链接选项
高级路由
高级加载
环境变量
结论

就像你可以绑定到 DOM 元素的属性一样,你也可以绑定到组件的属性(props)。例如,我们可以像绑定表单元素一样绑定这个 <Keypad> 组件的 value 属性。

首先,我们需要将这个属性标记为_可绑定的_。在 Keypad.svelte 中,更新 $props() 声明以使用 $bindable 符文:

Keypad
let { value = $bindable(''), onsubmit } = $props();

然后,在 App.svelte 中,添加一个 bind: 指令:

App
<Keypad bind:value={pin} {onsubmit} />

现在,当用户与数字键盘交互时,父组件中的 pin 值会立即更新。

请谨慎使用组件绑定。如果使用太多组件绑定,特别是在没有”单一数据源”的情况下,可能会难以跟踪应用程序中的数据流向。

在 GitHub 编辑此页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>
	import Keypad from './Keypad.svelte';
 
	let pin = $state('');
 
	let view = $derived(pin
		? pin.replace(/\d(?!$)/g, '•')
		: 'enter your pin');
 
	function onsubmit() {
		alert(`submitted ${pin}`);
	}
</script>
 
<h1 style="opacity: {pin ? 1 : 0.4}">
	{view}
</h1>
 
<Keypad {onsubmit} />