React Native之ViewPagerAndroid跳转页面问题

前言: 网上目前react-native的教程较少,加上许多帖子还是用的ES5(2015年6月已发布ES6标准),有些细节很难找到答案,这里把遇到的问题做一个分享,让学习者尽量少踩坑。

出现问题:

1.怎么获取ViewPager控件

2.怎么定义函数,使用setPage(),去跳转页面。

3.在使用了bind()的情况下,函数怎么传参。

解决方法:

步1.使用ref获取真实的DOM节点,类似去给控件设置id。

<ViewPagerAndroid style={styles.pageStyle} initialPage={this.state.selectedPage} ref="viewPage">....</ViewPagerAndroid>

步2.函数定义方式:

_onPageClick(position){
        this.refs.viewPage.setPage(position);
    }

步3.按钮的onPress()事件:

<TouchableOpacity onPress={this._onPageClick.bind(this,0)}>
....
</TouchableOpacity>

完整ViewPagerAndroid代码:

‘use strict‘

import React, { Component } from ‘react‘;
import {
    TouchableOpacity,
    View,
    Text,
    StyleSheet,
    ViewPagerAndroid,
} from ‘react-native‘

export default class MyViewPager extends Component{
    constructor(props){
        super(props);
        this.state = {
            selectedPage : 0,
        };
    }
    /**接收传递过来的参数 */
    componentDidMount(){
    }

    _onPageClick(position){
        this.refs.viewPage.setPage(position);
    }

    render(){
        return (
        <View>
        <View style={{flexDirection:‘row‘}}>
            <View style={styles.tab}>
                <TouchableOpacity onPress={this._onPageClick.bind(this,0)}>
                    <Text style={{textAlign:‘center‘}}>第一页</Text>
                </TouchableOpacity>
            </View>
            <View style={styles.tab}>
                <TouchableOpacity onPress={this._onPageClick.bind(this,1)}>
                    <Text style={{textAlign:‘center‘}}>第二页</Text>
                </TouchableOpacity>
            </View>
        </View>
        <ViewPagerAndroid style={styles.pageStyle} initialPage={this.state.selectedPage} ref="viewPage">
            <View style={{backgroundColor:"red"}}>
                <Text>First Page!</Text>
            </View>
            <View style={{backgroundColor:"yellow"}}>
                <Text>Second Page!</Text>
            </View>
        </ViewPagerAndroid>
        </View>
    )
    }
}

var styles = StyleSheet.create({
    container: {
        flex: 1,
        flexDirection: ‘row‘,
        justifyContent: ‘center‘,
        alignItems: ‘center‘,
        backgroundColor: ‘#F5FCFF‘,
    },
    welcome: {
        fontSize: 20,
        textAlign: ‘center‘,
        margin: 10,
    },
    tab:{
        height:30,
        flex:1,
    },
    pageStyle: {
        alignItems: ‘center‘,
        padding: 20,
        height:200,
    },
});
ps: 最后没有 AppRegistry.registerComponent(XX, () => XX);因为这个页面不是我的起始页。

模拟器页面截图:

				
时间: 2024-08-09 22:03:06

React Native之ViewPagerAndroid跳转页面问题的相关文章

React Native之ViewPagerAndroid仿淘宝首页顶部分类布局效果实现

转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51030410 大家好,趁着现在别人都去吃饭的时间,来给大家讲一讲React Native中Android部分的控件ViewPagerAndroid的讲解,这里特别提醒一下,我写的博客都是基于大家有一些React Native基础的前提下,因为关于React Native这一系列的博文我是最近开始更新,由于自身工作繁重(每天早上10点干到晚上10点,是不是很惨?),所以暂时还没

react native 安卓home返回键页面刷新

import { withNavigationFocus } from 'react-navigation'; class Warngreete extends React.Component { constructor(props) { super(props); } componentDidMount() { this.reload();}      componentWillReceiveProps(newProps) { if(newProps.isFocused){ this.relo

【React】路由组件跳转页面并存储参数

记录目前用的比较舒服的方式: 1.跳转 <Button type="secondary" size='small' > <Link to={{ pathname: '/base/strategyList',search:id+'', query: {sceneId:id,record:record} }}>查看</Link> </Button>  2.获取值: componentDidMount() { const {dispatch,l

安装android Studio和运行react native项目(跳坑篇)

1.需配环境变量,值为sdk的地址. ANDROID_HOME  值:E:\Users\HP\AppData\Local\Android\sdk 2.下载gradle-2.14.1-all.zip 包 修改地址为本地gradle压缩包的地址,这里应该注意路径不可有带空格的,比如Program Files是会出错的. 先打开在android Studio导入项目 要导入项目android目录下才有效,如E:\Project\RN\AwesomeProject\android 启动模拟器 cmd 在

React Native移动开发实战-3-实现页面间的数据传递

React Native使用props来实现页面间数据传递和通信.在React Native中,有两种方式可以存储和传递数据:props(属性)以及state(状态),其中: props通常是在父组件中指定的,而且一经指定,在被指定的组件的生命周期中则不再改变. state通常是用于存储需要改变的数据,并且当state数据发生更新时,React Native会刷新界面. 了解了props与state的区别之后,读者应该知道,要将首页的数据传递到下一个页面,需要使用props.所以,修改home.

安装android Studio和运行react native项目(基础篇)

ANDROID_HOME环境变量 确保ANDROID_HOME环境变量正确地指向了你安装的Android SDK的路径. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建 具体的路径可能和下图不一致,请自行确认. 你需要关闭现有的命令符提示窗口然后重新打开,这样新的环境变量才能生效. 测试安装 react-native init AwesomeProject cd AwesomeProject react-nativ

混合开发的大趋势之一React Native之页面跳转

转载请注明出处:王亟亟的大牛之路 最近事情有点多,没有长时间地连贯学习,文章也停了一个多礼拜,愧疚,有时间还是继续学习,继续写! 还是先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android (最近还是保持日更,除非忙的起飞活着出去玩不然都是更的,不信你看) 废话不多,贴下运行效果 登陆前 登录成功后 部分代码借鉴:https://github.com/SpikeKing/WclNavigator rn的页面跳转都是交由Naviga

我学React Native开发的经历(一) 第一周学习,环境搭建及demo1,一个导航跳转页面

大家好,这是跋涉者,wadereye,说来惭愧, 我是从2017年8月25日左右开始学习React Native的,因为时间不多, 在学习的过程中,感觉资料非常零散,要趟过的坑巨多,遇到的问题也非常多. 作为新手,文章看的多,但是开始写具体应用的时候,往往一脸迷茫. 所以,我一边学习,一边把学习React_native写过的测试放和看过的资料在这里,供大家参考 . 我整理的要学RN 之前,最好要掌握的基础知识: HTML基础知识 CSS基础知识 Javascript 基础知识 Node JS基础

React Native跳转Android原生界面

摘要:故事发生的起因是RN android因为获取一个验证码cookie的后续问题太麻烦 RN注册监听 componentWillMount(){ InteractionManager.runAfterInteractions(()=>{ this.passwordListener=DeviceEventEmitter.addListener('PassWordMessage',this.receiveAndroidMessage); this.startMyActivity(); }) } R