为了账号安全,请及时绑定邮箱和手机立即绑定

是否有一种方便的方法可以在 Svelte 组件中引用 DOM 元素?

是否有一种方便的方法可以在 Svelte 组件中引用 DOM 元素?

撒科打诨 2021-11-18 20:12:22
我习惯了像 React 或 Angular 这样的库/框架,它们都有方便的方法来访问属于逻辑组件的实际 DOM 元素。React 具有createRef实用程序,而 Angular 具有与例如结合的模板变量。@ViewChild.这些引用不仅使访问 DOM 变得容易,而无需每次都明确查询元素,而且它们还与 DOM 保持同步,以便它们始终保持对当前元素的引用。我刚开始在我的宠物项目中使用 Svelte,但尽管我浏览了 Svelte 的文档和谷歌很多,但我没有找到任何类似的概念和用法。我想这可能与 Svelte 的无运行时概念有关,但仍然不知道为什么没有这样的实用程序。那么问题来了,Svelte 中是否有类似的实用程序?
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

根据https://svelte.dev/tutorial/bind-this上的示例(感谢@skyboyer),您可以使用bind:this(在 REPL 中尝试):


<script>

    import { onMount } from 'svelte';


    let myInput;


    onMount(() => {

        myInput.value = 'Hello world!';

    });

</script>


<input type="text" bind:this={myInput}/>

您也可以使用use:action,如https://svelte.dev/docs#use_action和@collardeau 所建议的(在 REPL 中尝试):


<script>

    import { onMount } from 'svelte';


    let myInput;


    function MyInput (node) {

        myInput = node;

        myInput.value = 'Hello world!';

    }

</script>


<input type="text" use:MyInput/>


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信