getWrappedInstance()与wrappedInstance:react-redux @connect上的属性

时间:2018-07-26 21:34:19

标签: reactjs redux react-redux

我注意到@connect实例上有一个名为wrappedInstance的属性,该属性的组件状态由@connect包裹。如果我使用它访问状态如下

const { contact } = this.datasetConsoleInfo.contact.wrappedInstance.state;

效果很好。

但是我被告知要使用getWrappedInstance(),因为这是医生所说的。

实际上,以下作品完全相同:

const { contact } = this.datasetConsoleInfo.contact.getWrappedInstance().state;

但是我想知道是否每个人都这样做,因为这是文档所说的,并且他们害怕使用这个漂亮的属性。也许react-redux人们添加了此属性,以使我们的生活更轻松,但无意间对其进行了不良记录。

使用getWrappedInstance()和仅立即访问wrappedInstance:属性之间的区别是什么。

1 个答案:

答案 0 :(得分:0)

wrappedInstance和getWrappedInstance()之间没有任何区别。但是不建议直接访问对象中的属性(请考虑Encapsulation

我假设connect中的代码如下。

wrappedInstance = /* instance */;

getWrappedInstance() {
  return wrappedInstance;  // just return, but we can protect the data.
}

如您所知,javascript中没有私有变量或方法。因此,实际上,即使仅使用getter提供数据,也无法保护数据。因此,当我们要保护某些数据时,经常使用下划线(_)来注意数据是私有的。 (例如_wrappedInstance)。 Althoght connect方法未使用下划线(_),因此最好不要直接访问数据以遵循封装。