【发布时间】:2021-08-10 22:20:03
【问题描述】:
我只是从 Svelte 开始。 我有一个搜索栏组件和该组件的唯一实例:main_searchbar。我想从另一个组件集中该组件。
所以我在 searchbar.svelte 中导出输入:
<script>
export let value = '';
export let input;
</script>
<span class="searchbar">
<input
class="search"
type="text"
name="search"
bind:value
bind:this={input}
>
</span>
然后我在 main_searchbar.svelte 中导入:
<script context="module">
import Searchbar from './searchbar.svelte';
export let obj;
</script>
<Searchbar bind:this={obj}/>
然后我创建一个焦点按钮:
<script>
import {obj} from './main_searchbar.svelte';
function focus() {
obj.input.focus();
}
</script>
<button on:click={focus}>Focus</button>
最后是 App.svelte:
<script>
import Main_searchbar from './main_searchbar.svelte'
import Focus from './focus.svelte'
</script>
<Main_searchbar/>
<Focus/>
当然这不起作用: https://svelte.dev/repl/c4eb67950c6240e593173431edb18e1a?version=3.38.2 在 Svelte 中执行此操作的正确方法是什么?
【问题讨论】:
-
svelte 怎么知道
obj指向什么?如果您有多个 searchbar.svelte 实例,哪一个会获得焦点?我认为您应该选择商店或发送活动。
标签: javascript svelte svelte-3