【问题标题】: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>
      

      但是一个更通用的方式,你可以这样做,myobjectany 属性不存在,在这种情况下,你最好不要在内部为你的组件使用对象并在需要时将其构造为对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 2017-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        相关资源
        最近更新 更多