Если родительский компонент обновляет значение реквизита, которое он передает дочернему компоненту в рамках жизненного цикла, как дочерний компонент может использовать последнее значение этого реквизита в своих собственных жизненных циклах?
Вот пример, где значение опоры не определено в жизненных циклах дочернего компонента:
App.svelte
<script>
import { onMount } from 'svelte';
import Nested from './Nested.svelte';
let name;
onMount(() => {
name = "world";
})
</script>
<h1>Hello <Nested name="{name}" /></h1>
Nested.svelte
<script>
import { onMount, afterUpdate } from 'svelte';
export let name;
onMount(() => {
console.log("mount name:", name);
})
afterUpdate(() => {
console.log("after update name:", name);
})
</script>
<span>{name}</span>
https://svelte.dev/repl/65ac3d9c3913408bad459e2ad2a27d8e?version=3.4.2
Если я жду tick
, последнее значение доступно в жизненных циклах, но я не уверен, что это правильный способ справиться с этим:
App.svelte
<script>
import { onMount } from 'svelte';
import Nested from './Nested.svelte';
let name;
onMount(() => {
name = "world";
})
</script>
<h1>Hello <Nested name="{name}" /></h1>
Nested.svelte
<script>
import { onMount, afterUpdate, tick } from 'svelte';
export let name;
onMount(async () => {
await tick();
console.log("mount name:", name);
})
afterUpdate(async () => {
await tick();
console.log("after update name:", name);
})
</script>
<span>{name}</span>
https://svelte.dev/repl/9e66f312a17d41a8adf6e3e3b95c5327?version=3.4.2