react-native – 订阅Redux中存储中的单个属性更改
在Redux中,我可以轻松地订阅存储更改
store.subscribe(() => my handler goes here) 但是如果我的商店充满了不同的对象,并且在我的应用程序中的特定地方,我想订阅仅在商店中的特定对象中进行的更改?
当直接使用订阅时,无法订阅部分商店,但是Redux的创建者自己说 –
don’t use subscribe directly!为了使Redux应用程序的数据流真正工作,您将需要一个包装整个应用程序的组件.该组件将订阅您的商店.其余的组件将是这个包装器组件的子代,并且只能获得它们所需状态的部分.
如果您正在使用Redux with React,那么有一个好消息 – 官方react-redux包为您照顾!它提供了包装器组件,称为< Provider /> ;.然后,您将至少有一个“智能组件”可以侦听来自商店的提供者传递的状态更改.你可以指定哪个州的哪个部分应该听,而这些状态将作为道具传递给该组件(然后当然可以将它们传递给自己的孩子).您可以通过在“智能”组件上使用connect()功能并使用mapStateToProps功能作为第一个参数来指定.总结: 使用提供程序组件包装订阅存储更改的根组件 ReactDOM.render( <Provider store={store}> <App /> </Provider>,document.getElementById('root') ) 现在,任何< App />用connect()包装将是一个“智能”组件.您可以传递mapStateToProps来选择状态的某些部分,并将其作为道具. const mapStateToProps = (state) => { return { somethingFromStore: state.somethingFromStore } } class ChildOfApp extends Component { render() { return <div>{this.props.somethingFromStore}</div> } } //wrap App in connect and pass in mapStateToProps export default connect(mapStateToProps)(ChildOfApp) 显然< App />可以有很多孩子,您可以选择并选择mapStateToProps为其每个孩子应该收听的状态的哪些部分.我建议您在usage with React阅读文档,以更好地了解此流程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Unity3D研究院之将场景导出XML或JSON或二进制并且解析还原场
- JLINK烧写BIN文件到nand、norflash、SDRAM
- c# – 如何在QueryString中编码DateTime并在asp:QueryStri
- c# – 为什么后续的直接方法调用比第一次调用要快得多?
- 每周 Swift 社区问答 2016-01-13
- ruby中ffi和mri c扩展之间的权衡是什么?
- flex可以通过中间件tomcat发布成web项目,应该如何创建项目
- 探究 C# 中的 char 、 string(一)
- 是否有用于可控XML格式化的样式表或Windows命令行工具,特别
- 关于ORA-00257: archiver error. Connect internal only, u