reactjs – 如何在React-Native中的导航器的多个场景之间共享状
发布时间:2020-12-15 20:20:48 所属栏目:百科 来源:网络整理
导读:我想分享我的应用程序的所有屏幕的用户信息. (例如类似于webapps中的会话).如何以适当的标准方式在react-native中实现这一点. 到目前为止,我已经通过将User的所有信息保持为Main组件中的状态,然后将Main Component的状态作为子组件的属性传递来实现此目的.以
我想分享我的应用程序的所有屏幕的用户信息. (例如类似于webapps中的会话).如何以适当的标准方式在react-native中实现这一点.
到目前为止,我已经通过将User的所有信息保持为Main组件中的状态,然后将Main Component的状态作为子组件的属性传递来实现此目的.以下是组件的缩短代码 – var MainComponent = React.createClass({ getInitialState: function(){ return { user: { mobileNumber: "",emailId:"",},userValidationStatus: false }; },_renderScene: function(){ switch(route.id){ case 1: return <Screen1 navigator={navigator} parentState={this.state}/> case 2: return <Screen2 navigator={navigator} parentState={this.state} /> default: return <Screen1 navigator={navigator} /> } },render: function(){ return ( <Navigator initialRoute={{ id: 1,title: 'someTitle' }} renderScene={this._renderScene} navigator={this.props.navigator} /> ); } }); var Screen1 = React.createClass({ render: function(){ return ( <View> <TextInput autoFocus='true' onChangeText={(mobileNumber) => this.props.parentState.user.mobileNumber=mobileNumber} value={this.state.mobileNumber} /> <TextInput onChangeText={(emailId) => this.props.parentState.user.emailId=emailId} value={this.state.emailId} /> </View> ); } }); var Screen2 = React.createClass({ render: function(){ return ( <View> <TextInput autoFocus='true' onChangeText={(mobileNumber) => this.props.parentState.user.mobileNumber=mobileNumber} value={this.state.mobileNumber} /> <TextInput onChangeText={(emailId) => this.props.parentState.user.emailId=emailId} value={this.state.emailId} /> </View> ); } }); 这是实现这一目标的正确方法吗?如果不是,实现此类功能的正确方法是什么. 解决方法
将主状态保持在上层(控制器)组件并将数据作为道具传递下来是正确的.
另一种方法是在应用程序变得更复杂的情况下执行此操作并管理整个应用程序中的状态,即使用像Flux或Redux(Flux的实现)这样的库/意识形态. 互联网和他们的文档中有相当多的教程,至少应该让你入门.在潜入Redux之前,我会开始学习Flux. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 使用星期几确定日期的简单公式?
- objective-c – 将NSUInteger转换为带有ARC的字符串
- c# – 使用实体框架更新实体,同时忽略某些属性
- ruby-on-rails – 如何从Carrierwave Uploader对象引用父模
- 如何避免adtbundle新建项目总是产生一个appcompat_v7和frag
- objective-c – 在升级到Xcode 7.3 swift 2.2之后,从swift调
- C89中的可变长度数组?
- ORACLE导出导入意外终止导致 ORACLE initialization or shu
- 使用正则表达式解析Url字符串
- R – 需要使用正则表达式中的匹配来对数据帧进行子集化