Xia*_* Ma 3 javascript data-binding svelte
我想使用 Svelte 构建自定义元素。
因此,在rollup.config.js我设置customElement: true,然后我必须使用 来引用我的子组件。
但我发现,这样一来,就bind行不通了。这是代码示例
HelloWorld.svelte(子级)
<script>
import Hello from './components/Hello'
import World from './components/World'
export let value;
</script>
<svelte:options tag={'x-app-helloworld'}/>
<input type="text" bind:value={value} >
<input>
<x-app-hello />
<x-app-world />
Run Code Online (Sandbox Code Playgroud)
App.svslte(parent) 的一部分。
<x-app-helloworld bind:value={value}/>
Run Code Online (Sandbox Code Playgroud)
然后父级会显示错误:'value' is not a valid binding on <x-app-helloworld> elements.
我该如何解决这个bind问题?
绑定适用于常规元素,因为 Svelte 知道哪个事件对应于每个绑定 \xe2\x80\x94 例如,它知道当元素触发 a或事件时, valuean 会发生变化。<input>changeinput
对于自定义元素,无法知道父级应该监听什么事件(如果有)。目前还没有一种巧妙的方法来从元素内部分派事件。因此,最好的选择是将回调传递给自定义元素,并在值发生变化时调用它:
\n\n<x-app-helloworld onValueChange="{(x) => value = x}"/>\nRun Code Online (Sandbox Code Playgroud)\n\n<script>\n export let onValueChange;\n export let value;\n\n $: onValueChange(value);\n</script>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4464 次 |
| 最近记录: |