Я использовал on:click
и искал событие с помощью Svelte. Как запустить пользовательское событие в дочернем компоненте, которое я могу записать в родительском компоненте? Я видел учебник, в котором я могу передать что-то вроде этого, однако я не мог заставить его подключиться.
<Component on:customClick = {myThing}>
У дочернего компонента есть некоторая логика, которая выглядит так:
<script>
export let myThing = '';
<script>
<input type = "text" onClick = {() => myThing= 'Update'} />
Кажется, это не работает, что мне не хватает?
Вы можете отправлять событие из дочернего компонента и обрабатывать его в родительском компоненте.
// children component
<script>
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
let count = 0;
function handleClick() {
count += 1;
dispatch("customClick", {
count
});
}
</script>
<button on:click = {handleClick}>
Clicked {count} {count === 1 ? 'time' : 'times'}
</button>
// parent component
<script>
import ChildrenComponent from "./ChildrenComponent.svelte";
let count;
const handleCustomClick = event => {
count = event.detail.count;
};
</script>
<main>
<p>Parent count: {count || 0}</p>
<ChildrenComponent on:customClick = {handleCustomClick}/>
</main>
Ниже приведена демонстрационная версия codeandbox
Справка:
Или вот так (без рассылки):
Родитель:
<script>
import Child from "./Child.svelte";
let count = 0;
const handleClick = () => {
count += 1;
};
</script>
<main>
<p>Parent count: {count}</p>
<Child {count} on:click = {handleClick} />
</main>
Ребенок:
// child component
<script>
export let count;
</script>
<button on:click>
Clicked {count}
</button>