加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读