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

反应本机 – React Native Navigator

发布时间:2020-12-15 20:52:45 所属栏目:百科 来源:网络整理
导读:如何使用React Native中的Navigator将数据从sceneA传递给sceneB? 我用这个去现场B: this.props.navigator.push({ id: "MainPage",name: 'mainPage'}); 您需要在导航器上设置passProps属性.最近有一些关于堆栈溢出的例子,特别是 here和 here. Navigator ini
如何使用React Native中的Navigator将数据从sceneA传递给sceneB?

我用这个去现场B:

this.props.navigator.push({
    id: "MainPage",name: 'mainPage'
});
您需要在导航器上设置passProps属性.最近有一些关于堆栈溢出的例子,特别是 here和 here.
<Navigator
  initialRoute={{name: 'Main',component: Main,index: 0}}
  renderScene={(route,navigator) =>    {
    return React.createElement(<YourComponent />,{ ...this.props,...route.passProps,navigator,route } );
  }} />

要么

<Navigator
  initialRoute={{name: 'Main',navigator) => {
      <route.component {...route.passProps} navigator={navigator} route={route} />
     }
   }
 />

如果您正在寻找最基本的设置只是为了了解功能,我已经设置了一个项目here,您可以参考,粘贴下面的代码.

'use strict';

var React = require('react-native');
var {
  AppRegistry,StyleSheet,Text,View,Navigator,Image,TouchableHighlight,TouchableOpacity
} = React;

class Two extends React.Component {
    render(){
    return(
        <View style={{marginTop:100}}>
          <Text style={{fontSize:20}}>Hello From second component</Text>
          <Text>id: {this.props.id}</Text>
          <Text>name: {this.props.name}</Text>
            <Text>name: {this.props.myVar}</Text>
        </View>
    )
  } 
}

class Main extends React.Component {
  gotoNext(myVar) {
   this.props.navigator.push({
      component: Two,passProps: {
        id: 'page_user_infos',name: 'page_user_infos',myVar: myVar,}
    })
  }

  render() {
    return(
      <View style={{flex: 4,flexDirection: 'column',marginTop:100}}>
        <TouchableHighlight style={{ height:40,borderWidth:1,marginBottom:10,backgroundColor: '#ddd'}} name='Pole' onPress={ () => this.gotoNext('This is a property that is being passed') }>
          <Text style={{textAlign:'center'}}>Go to next page</Text>
        </TouchableHighlight>
      </View> 
    )
  }
}

class App extends React.Component {
  render() {

    return (
      <Navigator
                style={{flex:1}}
          initialRoute={{name: 'Main',index: 0}}
          renderScene={(route,navigator) =>    {
            if (route.component) {
                          return React.createElement(route.component,route } );
                      }
                }}
          navigationBar={
            <Navigator.NavigationBar routeMapper={NavigationBarRouteMapper} />
      } />
);
}
}


var NavigationBarRouteMapper = {
  LeftButton(route,index,navState) {
    if(index > 0) {
      return (
      <TouchableHighlight  style={{marginTop: 10}} onPress={() => {
            if (index > 0) {
              navigator.pop();
            } 
        }}>
       <Text>Back</Text>
     </TouchableHighlight>
 )} else {
 return null}
 },RightButton(route,navState) {
    return null;
  },Title(route,navState) {
    return null
  }
};


var styles = StyleSheet.create({

});

AppRegistry.registerComponent('App',() => App);

(编辑:李大同)

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

    推荐文章
      热点阅读