zoukankan      html  css  js  c++  java
  • 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);因为这个页面不是我的起始页。

    模拟器页面截图:

    
    
  • 相关阅读:
    python自动化测试(3)- 自动化框架及工具
    python自动化测试(2)-自动化基本技术原理
    软件开发过程自动化原理及技术(完整示例)
    网络验证码--你到底是爱它还是恨它?
    python的高性能web应用的开发与测试实验
    接口应用小玩具-博客园积分排名变动监控工具
    openwrt-智能路由器hack技术(2)---"网路信息监控和窃取"
    Java中的Date和时区转换
    fastjson JSONObject遍历
    【git】强制覆盖本地代码(与git远程仓库保持一致)
  • 原文地址:https://www.cnblogs.com/Sweet-Candy/p/5694723.html
Copyright © 2011-2022 走看看