Basic Svelte
Introduction
Bindings
Classes and styles
Advanced Svelte
Advanced reactivity
Motion
Advanced bindings
Advanced transitions
Context API
Special elements
<script module>
Next steps
Basic SvelteKit
Introduction
Routing
Loading data
Headers and cookies
Shared modules
API routes
$app/state
Errors and redirects
Advanced SvelteKit
Page options
Link options
Advanced routing
Advanced loading
Environment variables
Conclusion
As a general rule, data flow in Svelte is top down — a parent component can set props on a child component, and a component can set attributes on an element, but not the other way around.
Sometimes it’s useful to break that rule. Take the case of the <input>
element in this component — we could add an oninput
event handler that sets the value of name
to event.target.value
, but it’s a bit... boilerplatey. It gets even worse with other form elements, as we’ll see.
Instead, we can use the bind:value
directive:
App
<input bind:value={name}>
This means that not only will changes to the value of name
update the input value, but changes to the input value will update name
.
previous next
1
2
3
4
5
6
7
8
<script>
let name = $state('world');
</script>
<input value={name} />
<h1>Hello {name}!</h1>