Wtf are props
//Nested.svelte (child)
<script>
let { answer = 'a mystery'} = $props();
</script>
<p>The answer is {answer}</p>
//App.svelte (parent)
<script>
import Nested from './Nested.svelte';
</script>
<Nested answer={42} />
<Nested />
- props (short for properties) are values passed from a parent component to a child component.
- They allow you to pass data and configuration down the component tree, making components more reusable and modular.
- What will show
- The answer is 42
- The answer is a mystery
spread prop
//PackageInfo.svelte (child)
<script>
let { name, version, description, website } = $props();
</script>
<p>
The <code>{name}</code> package is {description}. Download version {version} from
<a href="https://www.npmjs.com/package/{name}">npm</a> and <a href={website}>learn more here</a>
</p>
//App.svelte (parent)
<script>
import PackageInfo from './PackageInfo.svelte';
const pkg = {
name: 'svelte',
version: 5,
description: 'blazing fast',
website: 'https://svelte.dev'
};
</script>
<PackageInfo {...pkg}/>
- We can just do
<PackageInfo {...pkg}/>
and get all props instead of
<PackageInfo
name={pkg.name}
version={pkg.version}
description={pkg.description}
website={pkg.website}
/>
Component events
- You can pass event handlers to components like any other prop
// Stepper.svelte
<script>
let { increment, decrement } = $props();
</script>
<button onclick={decrement}>-1</button>
<button onclick={increment}>+1</button>
“
<script>
import Stepper from './Stepper.svelte';
let value = $state(0);
</script>
<p>The current value is {value}</p>
<Stepper
increment={() => value += 1}
decrement={() => value -= 1}
/>
- we define
increment
anddecrement
in theStepper
component