【问题标题】:Is it possible to bind object field directly in Svelte 3?是否可以直接在 Svelte 3 中绑定对象字段?
【发布时间】:2020-11-24 20:57:24
【问题描述】:
有没有办法在 Svelte 3 中绑定对象字段?
例子:
<script>
import MyComponent from "./MyComponent.svelte"
let myobjectID
</script>
<MyComponent bind:myobject[id]={myobjectID}>
<!-- Where myobject == {id: "123", name: "myName", and so on...} -->
这可能吗?
【问题讨论】:
标签:
svelte
svelte-3
svelte-component
svelte-2
【解决方案1】:
在 svelte 中没有内置方法可以做到这一点,但这里有一个解决方法:
<script>
import MyComponent from './MyComponent.svelte';
let myobjectID = 1;
$: myObject = {...myObject, id: myobjectID}
</script>
<MyComponent bind:myobject={myObject} />
解决方案是创建一个响应式语句,它将所有myobject 属性分配给App.svelte 中的myObject 局部变量,然后分配id 属性,然后将绑定到@987654325 @ 并让它随着myobjectID 的变化而变化。
【解决方案2】:
没有。
如果您希望 MyComponent 在内部处理对象,但只允许使用者更改该对象的特定部分,您可以执行以下操作:
App.svelte
<script>
import MyComponent from "./MyComponent.svelte"
let myobjectID
</script>
<MyComponent bind:id={myobjectID} />
MyComponent.svelte
<script>
export let id
$: myobject = {
id,
name: 'myName'
}
</script>
但是一个更通用的方式,你可以这样做,myobject 的 any 属性不存在,在这种情况下,你最好不要在内部为你的组件使用对象并在需要时将其构造为对象。