我注意到@connect实例上有一个名为wrappedInstance
的属性,该属性的组件状态由@connect包裹。如果我使用它访问状态如下
const { contact } = this.datasetConsoleInfo.contact.wrappedInstance.state;
效果很好。
但是我被告知要使用getWrappedInstance()
,因为这是医生所说的。
实际上,以下作品完全相同:
const { contact } = this.datasetConsoleInfo.contact.getWrappedInstance().state;
但是我想知道是否每个人都这样做,因为这是文档所说的,并且他们害怕使用这个漂亮的属性。也许react-redux人们添加了此属性,以使我们的生活更轻松,但无意间对其进行了不良记录。
使用getWrappedInstance()
和仅立即访问wrappedInstance
:属性之间的区别是什么。
答案 0 :(得分:0)
wrappedInstance和getWrappedInstance()之间没有任何区别。但是不建议直接访问对象中的属性(请考虑Encapsulation)
我假设connect
中的代码如下。
wrappedInstance = /* instance */;
getWrappedInstance() {
return wrappedInstance; // just return, but we can protect the data.
}
如您所知,javascript中没有私有变量或方法。因此,实际上,即使仅使用getter提供数据,也无法保护数据。因此,当我们要保护某些数据时,经常使用下划线(_
)来注意数据是私有的。 (例如_wrappedInstance
)。 Althoght connect
方法未使用下划线(_
),因此最好不要直接访问数据以遵循封装。