javascript - 如何使用 Svelte 传播 Prop

标签 javascript svelte

我正在使用嵌套组件,我想使用父组件中的值设置该嵌套组件的整个 data 属性。

例如,第一个 app.html 组件

<NestedComponent data="{{ forNested }}" />
<script>
  export default {
    data: () => {
      return { forNested: { a: 1, b, 2 }};
    }
  };
</script>

那么嵌套组件 nested-component.html 将是:

<p>Hi {{ a }} and {{ b }}</p>

相反,这意味着我必须这样做:

<p>Hi {{ data.a }} and {{ data.b }}</p>

是否有某种关键字属性可以做到这一点?

<小时/>

更新

由于没有扩展运算符,我做了类似的事情,您可以在其中设置任意字段,例如 data ,然后观察它以更新所有属性。在嵌套组件中:

<div class="stuff">{{ someProperty }}</div>
<script>
export default {
  oncreate: function() {
    // Allow data to set all propeties, since we can't set
    // all from the markup of a component
    this.observe('data', d => {
      if (_.isPlainObject(d)) {
        this.set(d);
      }
    });
  }
}
</script>

然后,当使用该嵌套组件时,其中 forNestedObject 类似于 { someProperty: 123 }:

<NestedComponent data="{{ forNestedObject }}" />

最佳答案

Actually I just tried and YES you can spread props.

父组件

<script>
  import HelloWorld from "./HelloWorld.svelte";
  let allProps = {
    first: 'First prop',
    second: 'Second prop'
  };
</script>

<HelloWorld {...allProps} />

子组件

<script>
    export let first;
    export let second;
</script>

First prop: {first} <br>
Second prop: {second}

See it in action (Codesandbox)

关于javascript - 如何使用 Svelte 传播 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826101/

相关文章:

javascript - AngularJS Google 动态标题仅不显示在主页上

javascript - google.script.run 执行但返回 "null"而 code.gs 函数确实有/日志值要返回

javascript - 没有 context=module 脚本标签的预加载函数

Webpack devServer 代理不适用于 Sapper

javascript - 如何评估 svelte 存储字符串中的值

javascript - 无法使用 d3 Force 和 Svelte 更新节点位置

javascript - 下划线JS,查找包含数组中值的对象

javascript - ESTree 中使用什么语言来描述抽象语法树?

php - 嵌入式 If/Elses 与序列化 And (&&) 语句?

用于创建 Svelte 元素而不是模板的 JavaScript API