GVKun编程网logo

reactnative tabnavigator

18

如果您想了解reactnativetabnavigator的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析javascript–TabNavigator中的ReactNavigation传递道

如果您想了解reactnative tabnavigator的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析javascript – TabNavigator中的React Navigation传递道具、javascript-React-Navigation 3:使用createBottomTabNavigator和createStackNavigator打开模式、React Native BottomTabNavigator导航不起作用、React Native TabNavigator 设置Tab切换的各个方面,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

reactnative tabnavigator

reactnative tabnavigator

这种效果相信大家见的很多,那么是怎么实现的呢?使用的是reactNavigation

代码如下

import React,{Component} from 'react';
import {
	View,Text,Image,ActivityIndicator,StyleSheet,Dimensions,Animated,Easing
} from 'react-native';

import {
	StackNavigator,TabNavigator,} from 'react-navigation'

import ShopInfo from './ShopInfo';
import ShopUrl from './ShopUrl';
import ShopEvaluate from './ShopEvaluate';

const {width,height} = Dimensions.get('window');
const tabWidthPadding = (((width)/3)-30)/2;



const MainScreen = TabNavigator({
	shopInfo:{
		screen:ShopInfo,navigationoptions:{
			title:'商品',}
	},shopUrl:{
		screen:ShopUrl,navigationoptions:{
			title:'详情'
		}
	},shopEvaluate:{
		screen:ShopEvaluate,navigationoptions:{
			title:'评价'
		}
	}
},{
	tabBarOptions:{
		activeTintColor:'#000000',inactiveTintColor:'#666666',style:{
			backgroundColor:'white',height:50,},indicatorStyle:{
			height:3,width:30,backgroundColor:'#fa372d',marginLeft:tabWidthPadding,marginRight:tabWidthPadding,justifyContent:'center'
		}
	}
});

const Shop = StackNavigator({
	mainScreen:{
		screen:MainScreen,navigationoptions:{
			gesturesEnabled:true,header:null
		}
	}
})


export default class ShopHomeInfo extends Component{

	constructor(props){
		super(props)

	}

	render(){
		const {params} = this.props.navigation.state;
		return(
			<View style={styles.container}>
				<Shop style={{flex:1}} />
			</View>
		);
	}
}

const styles = StyleSheet.create({
  container:{
  	width:width,height:height,})

ShopInfo.js的代码如下
import React,ScrollView,} from 'react-native';

export default class ShopInfo extends Component{

	constructor(props){
		super(props)
		this.state={

		}
	}

	componentDidMount(){

	}

	render(){
		return(
			<View>
				<Text>商品信息参数是:</Text>
			</View>
		);
	}

}

ShopUrl.js
import React,WebView,} from 'react-native';

export default class ShopUrl extends Component{

	render(){
		return(
			<WebView 
				source={{uri:'http://blog.csdn.net/u010648159/article/details/78636281'}}
				style={{flex:1}}
			/>
		);
	}
}

ShopEvaluate.js
import React,} from 'react-native';

export default class ShopEvaluate extends Component{

	render(){
		return(
			<View style={{width:50,height:50}}>
				<Text>商品评价</Text>
			</View>
		);
	}
}
就是这么的简单,如果如果要在导航栏加上左边返回按钮,就比较麻烦了,大家可以想一想啊!!!!

javascript – TabNavigator中的React Navigation传递道具

我有在初始屏幕上从服务器加载的道具.我想将它们传递给其他选项卡屏幕.但是,我没有在网上找到任何例子.我知道screenProps,但不知道如何设置它.我尝试过的所有方法都导致了错误.

const EProj = TabNavigator({
  Home: { screen: HomeScreen },
  Map: { screen: MapG },
  Login: { screen: Login },
  Profile: { screen: Profile },
}, {
  tabBarPosition: 'bottom',
  animationEnabled: true,
  tabBarOptions: {
    activeTintColor: '#1abc9c',
  },
});

这是我的屏幕设置.我应该在哪里放置screenProps?

<EProj
  screenProps={cats}
/>

如何设置它的任何好例子都会有所帮助.提前致谢.

HomeScreen设置:

class HomeScreen extends React.Component {
  static navigationoptions = {
    tabBarLabel: 'Home',
  };

...

  componentwillMount(){
    console.log("Starting to load assets from server!");
    this.onLoadCats(); /*starts asset loading*/
  }

  render() {
    return (
      <View style={styles.container}>

        <Text>Welcome to alpha 1.17 This is hard system test.</Text>
        <AssetsLoad catsL={this.state.catsL} />
      </View>
    );
  }
}

解决方法:

你可以做的是创建一个可以返回导航的高阶组件,在该组件的componentDidMount中,你可以加载数据并通过screenProps传递它.

const EProj = TabNavigator({
  Home: { screen: HomeScreen },
  Map: { screen: MapG },
  Login: { screen: Login },
  Profile: { screen: Profile },
}, {
  tabBarPosition: 'bottom',
  animationEnabled: true,
  tabBarOptions: {
    activeTintColor: '#1abc9c',
  },
});

class MainNavigation extends React.Component {
  constructor(props) {
    super(props);
    this.state = {cats: []};
  }
  componentDidMount() {
    this.onLoadCats().then((cats) => this.setState({ cats: cats }));
  }
  render() {
    return(<EProj screenProps={{ cats: this.state.cats}} />
  }
}

// Now you can do in your screens
console.log(this.props.screenProps.cats);

/* This is next line is wrong, please check update above */ 
/* console.log(this.props.navigation.state.params.cats); */

javascript-React-Navigation 3:使用createBottomTabNavigator和createStackNavigator打开模式

javascript-React-Navigation 3:使用createBottomTabNavigator和createStackNavigator打开模式

我知道以前曾问过这个问题,但仅适用于旧版本的反应导航.从那以后,一些事情发生了变化. createBottomTabNavigator使创建底部导航器的速度大大提高,并且功能jumpToIndex()不再存在.

我的问题是如何创建类似于Instagram的底部选项卡,其中第一,第二,第四和第五个导航按钮的行为与通常的选项卡导航器相同,而中间按钮(screen3)将打开模态screen3Modal.

我已经在react-navigation 3.x.x中使用createBottomTabNavigator和createStackNavigator对其进行了尝试.

import React,{ Component,} from 'react';
import { createBottomTabNavigator,createStackNavigator,createAppContainer,} from 'react-navigation';
import { Screen1,Screen2,Screen3,Screen4,Screen5 } from './screens';

const TabNavigator = createBottomTabNavigator({
  screen1: { screen: Screen1,},screen2: { screen: Screen2,screen3: { 
    screen: () => null,navigationoptions: () => ({
      tabBarOnPress: () => this.props.navigation.navigate('screen3Modal')
    })
  },screen4: { screen: Screen4,screen5: { screen: Screen5,});

const StackNavigator = createStackNavigator({
  Home: { screen: TabNavigator },screen3Modal: { screen: Screen3,{
  initialRouteName: 'Home',});

const StackNavigatorContainer = createAppContainer(StackNavigator);

export default class App extends Component {
  render() {
    return <StackNavigatorContainer />;
  }
}

此代码创建选项卡导航和模式导航.可以从另一个屏幕打开模态,但是在选项卡导航器中无法使用.我得到未定义的错误消息不是对象(正在评估“ _this.props.navigation”)

最佳答案
您可以将所有内容包装在同一个StackNavigator中,这样就可以轻松导航到其他路线.在这里,我将screen3作为默认路由传递,但是您可以将其更改为所需的任何值.

import React,screen3: { screen: () => null,//this.props.navigation.navigate('screen3Modal')
  screen4: { screen: Screen4,{
  initialRouteName: 'screen3Modal',});

const StackNavigatorContainer = createAppContainer(StackNavigator);

export default class App extends Component {
  render() {
    return <StackNavigatorContainer />;
  }
}

React Native BottomTabNavigator导航不起作用

React Native BottomTabNavigator导航不起作用

您正在尝试访问导航,该导航作为一种道具传递给MenuFlatList组件,您应该在下面进行操作

  <TouchableWithoutFeedback onPress={() => {
         this.props.navigation.navigate('WebViewImprint');
   }}>

导航中的任何屏幕组件都将收到一个“导航”道具,可用于导航到其他屏幕。

React Native TabNavigator 设置Tab切换

React Native TabNavigator 设置Tab切换

主要代码如下:

const resetActionTab = NavigationActions.navigate({routeName: 'Tab',action: NavigationActions.navigate({ routeName: 'Home'})
});
this.props.navigation.dispatch(resetActionTab);

我们今天的关于reactnative tabnavigator的分享已经告一段落,感谢您的关注,如果您想了解更多关于javascript – TabNavigator中的React Navigation传递道具、javascript-React-Navigation 3:使用createBottomTabNavigator和createStackNavigator打开模式、React Native BottomTabNavigator导航不起作用、React Native TabNavigator 设置Tab切换的相关信息,请在本站查询。

本文标签: