有没有一种方法可以在Polymer组件之间共享数据?

3

我现在有两个 Polymer 组件,它们共享大量数据。你可以在这里看到:

<polymer-component1
      series="{{series}}" 
      stackhelper={{stackhelper}} 
      stack={{stack}}
      controls={{controls}} 
      camera={{camera}} 
      threed={{threed}} 
      scene={{scene}} 
      renderer={{renderer}}>
</polymer-component1>
<polymer-component2 
      stackhelper=[[stackhelper]]
      stack={{stack}} 
      controls={{controls}} 
      camera={{camera}} 
      threed={{threed}} 
      scene={{scene}} 
      renderer={{renderer}}
      guiobjects={{guiobjects}}>
</polymer-component2>

目前这个工作正常,但是关于共享数据的最佳实践是什么?有没有办法在两个组件之间共享所有属性?


2
Redux非常适合管理共享状态,并且有可用的Polymer绑定。https://github.com/tur-nr/polymer-redux - danielx
2个回答

2

推荐通过数据绑定来共享数据,就像你现在正在做的一样。您可以共享任何属性,不仅限于字符串和数字。例如,假设您有一个对象

JS

data = {
    series: "",
    stackhelper: "",
    stack: "",
    controls: "",
    camera: "",
    threed: "",
    scene: "",
    renderer: "",
}

你的代码可以像这样重写。
HTML
<polymer-component1 data="{{data}}"></polymer-component1>
<polymer-component2 data="{{data}}"></polymer-component2>

那会让HTML标签看起来更干净,但我认为它不太实用。是的,我可以看到我的方法是可以的并且很常见。谢谢! - Rashomon

1
在 Polymer 2 中,一个元素可以通过继承来继承属性。
class MyElementSubclass extends MyElement {...}

或者您可以创建一个只包含两个组件都需要的属性的元素,然后两个组件都继承该元素的属性。您可以在 这里 找到此内容,请向下滚动到“扩展现有元素”部分。


1
但是我需要在组件之间共享属性的值,不仅仅是属性或方法。不确定是否会共享这些值。 - Rashomon
1
抱歉,我可能误解了你的意思,但是danielx是正确的,我实际上使用redux在组件之间共享状态 :-) - Pascal L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接