`

React-Native学习笔记(2)

 
阅读更多

这次练习使用了react-native中的ListView(列表数据展示)和Navigator(页面导航切换),以下为示例代码:

var React = require('react-native');
var {
  AppRegistry,
  View,
  Navigator,
  Text,
  BackAndroid,
  StyleSheet,
    ListView
} = React;

class PAFFNetwork {

    /**
     * @method HTTP 请求
     * @param options = {
     *      path    : ''        //http url path
     *      method  : ''        //http method,默认 GET
     *      params  : {}        //url query(GET) or body query(POST)
     * }
     * @return A Promise(
     *      then    : Response JSON Object 中 data 数据
     *      catch   : Request Error 或 Response JSON Object error code 失败的错误
     *  )
     * */
    static async request() {
        return fetch("http://gz-fbtoamc.pingan.com.cn/btoa/portal/account/getBankList ", {method: "GET"})
    }
}



var FeedView = React.createClass({
    goBack(){
      this.props.navigator.push({name:"default"});
    },

    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.welcome} onPress={this.goBack} >
                    I am Feed View! Tab to default view!
                </Text>
            </View>  
        )
    }
});


var WelcomeView = React.createClass({
    onPressFeed() {
      console.log(this.refs);
      console.log(this.props);
       // this.setState({
       //  openStatus: !!!this.state.openStatus,
       //  dataSource: this.state.dataSource.cloneWithRows([{bankName:"test1",bankId:"001"}, {bankName:"test2",bankId:"002"}])
       // });
        //var getResult = PAFFNetwork.get();
        //this.props.navigator.push({name: 'feed'});
    },

    getInitialState() {
      var ds = new ListView.DataSource({
        rowHasChanged: (r1, r2) => r1 !== r2
      });
      return {
        dataSource: ds.cloneWithRows([{bankName:"test1",bankId:"001"}, {bankName:"test2",bankId:"002"}]),
        openStatus:0
      };
    },
    componentDidMount() {
      // var self = this;
      // var getResult = PAFFNetwork.request();
      // getResult.then(function(res){
      //   return res.json();
      // }).then(function(res){
      //   self.setState({
      //     dataSource: self.state.dataSource.cloneWithRows(res.data.bankList)
      //   });
      //   console.log(res);
      // })
    },
    renderRow(rowData, s1, rowID) {
      console.log(arguments);
      console.log("renderRow...."+this.state.openStatus);
      return (<Text hidden='true' ref={rowID} onPress={this.onPressFeed}>{rowData.bankName}</Text>);
    },
    render() {
      console.log("render...");
        return (
            <View style={styles.container}>
                <Text style={styles.welcome} onPress={this.onPressFeed} >
                    This is welcome view.Tap to go to feed view.
                </Text>
                <ListView ref={'ListView'}
                    dataSource={this.state.dataSource}
                    renderRow={this.renderRow}
                  />
            </View>
        );
    }

});

var DefaultView = React.createClass({

    render(){
      return (
          <View style={styles.container}>
              <Text style={styles.welcome}>Default view</Text>
          </View>
      )
    }
}); 



var SampleApp = React.createClass({

    configureScene(route){
      return Navigator.SceneConfigs.PushFromRight;
    },

    renderScene(router, navigator){
      var Component = null;this._navigator = navigator;
      switch(router.name){
        case "welcome":
          Component = WelcomeView;
          break;
        case "feed":
          Component = FeedView;
          break;
        default: //default view
          Component = DefaultView;
      }

      return <Component navigator={navigator} />
    },

    componentDidMount() {
      var navigator = this._navigator;
      BackAndroid.addEventListener('hardwareBackPress', function() {
          if (navigator && navigator.getCurrentRoutes().length > 1) {
            navigator.pop();
            return true;
          }
          return false;
      });
    },


    componentWillUnmount() {
      BackAndroid.removeEventListener('hardwareBackPress');
    },

    render() {
        return (
            <Navigator
                initialRoute={{name: 'welcome'}}
                configureScene={this.configureScene}
                renderScene={this.renderScene} />
        );
    }

});


var styles = StyleSheet.create({
  container: {
    flex: 1,
    //justifyContent: 'center',
    //alignItems: 'center',
    backgroundColor: '#F5FCFF',
    margin: 30,
    padding: 30
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  }
});

//AppRegistry.registerComponent('mytest01', () => SampleApp);

AppRegistry.registerComponent('mytest01', function(){
    var getResult = PAFFNetwork.request();
    getResult.then(function(res){
      return res.json();
    }).then(function(res){
      console.log(res);
    })
    console.log("getResult...");
    return SampleApp;
});

 

分享到:
评论

相关推荐

    React Native 基础学习笔记.rar

    这个“React Native基础学习笔记”很可能是对这一跨平台开发技术的详细讲解和实践经验的汇总。React Native的核心理念是“Learn once, write anywhere”,即开发者只需掌握一次React的语法和概念,就能在iOS和...

    react-native移动端开发笔记1

    这篇移动端开发笔记将带你逐步进入React Native的世界,首先从基础环境的搭建开始。 1. 安装Node.js Node.js是React Native开发的基础,因为它提供了npm(Node Package Manager),这是JavaScript包管理器,用于...

    learning-react-native:React Native学习笔记本

    React Native学习笔记 欢迎您帮忙纠错,一起帮助更多的人,学习交流QQ群: React本机 开发工具 [使用WebStorm调试React Native] [故事书] [reactotron] 节点相关 最佳拍档 原生集成 模拟与测试 [easy-mock介绍] ...

    swift-ReactNative学习笔记

    在"RNStudyNotes-master"这个压缩包中,可能包含了作者对于这两种技术结合使用的实践经验、代码示例和学习心得,对于想要深入了解Swift与React Native集成的开发者来说,是一份宝贵的学习资源。

    React-native-Book-reader

    React-native-Book-reader 是一个基于React Native框架开发的图书阅读应用程序。...开发者可以通过研究这个项目来学习如何构建一个功能完善的原生移动阅读应用,同时提升自己的React Native和TypeScript技能。

    安卓java读取网页源码-WNote:react-native客户端

    抽空学习了下react-native教程,花了三周多下班时间,开发了这个项目 ,使用的最新的react-native版本0.60.4, 配色和主要功能布局参照了印象笔记客户端,当然作为练手项目,功能没有那么全面, 作为入门学习应该是够了....

    react-native-practical-guide:Udemy课程的练习文件,作业和笔记

    《React Native实战指南:课程练习、作业与笔记详解》 React Native是一款由Facebook开发的开源框架,它允许开发者使用JavaScript和React来构建原生的移动应用程序。本篇将深入探讨在"react-native-practical-guide...

    程序员面试刷题的书哪个好-React-Native-In-Action:ReactNative零基础入门到项目实战学习笔记

    此项目记录我在2017年3月学习的过程,整理了一下放到GitHub上,分为React、React Native和豆瓣项目实战三个部分(DoubanProject在Recat Native Demo文件目录下),废话不多说,贴上笔记和代码。 第一部分 React 简介 ...

    react-native-githubnotetaker

    React Native的核心理念是“Learn once, write anywhere”,即学习一次,可以在iOS和Android平台上编写代码。这个框架利用了React的组件化思想,将UI设计分解为可复用的组件,提高了开发效率。 **GitHub 配置文件**...

    ReactNative之键盘Keyboard的弹出与消失示例

    在开发中经常遇到需要输入的地方,所以就学习了一下ReactNative键盘Keyboard的弹出与消失的方法,留个笔记。 今天我们来说下RN对键盘事件的支持。 在React-native 的Component组件中有个Keyboard. github地址如下...

    reactnative调用android原生模块Toast学习笔记

    在React Native框架中,开发者可以利用JavaScript来构建原生级别的移动应用,同时还能与原生平台的API进行交互。本文将深入探讨如何在React Native项目中调用Android原生模块,特别是实现显示Toast功能,这对于增强...

    react native 模仿鲨鱼笔记

    通过这个项目,开发者不仅可以学习React Native的基本用法,还能深入理解如何组织一个完整的移动应用项目,包括组件设计、数据管理、网络请求和用户体验优化。同时,由于React Native跨平台的特性,开发者可以借此...

    Android-使用ReactNative开发的一个笔记App

    在本项目中,我们探索的是如何使用React Native技术在Android平台上构建一个笔记应用程序。React Native是由Facebook开发的开源框架,它允许开发者使用JavaScript编写原生移动应用,同时享受到跨平台开发的优势。...

    airbnb:使用react和react-native的airbnb克隆

    我的目标是实际学习React + / React-Native,因为我发现它们很酷,可以创建出色的应用程序。 (首先,我建议任何人签出我的笔记,在构建此项目时,我按照Ben Awad的播放列表进行 -继续,单击并签出,以查看详细的...

    e-note:一个在React-Native中内置的笔记应用程序。 使用Expo和其他React技术学习经验

    ReactNative 目标 使应用程序可以离线和在线工作 严重的是我不确定 我只想了解更多信息并利用它来更好地构建 我的建筑在下面 :party_popper: :party_popper: 效果很好,但还需要添加更多内容 记笔记页面

    React-Notes:这是我从零开始学习React时的笔记

    以下是我从零开始学习React时的笔记,涵盖了React的基础知识、核心概念和常见用法。 1. **React基本概念** - **虚拟DOM**:React使用虚拟DOM来提高性能,它是一个轻量级的内存中的表示,允许快速计算UI变化,减少...

    AwesomeNote4Kids:给孩子的简单笔记..

    要运行此应用程序: $ npm install$ react-native link$ react-native start$ react-native run-iosor$ react-native run-android截屏v1.0版本@ 2018/06/13 词汇表条目的添加/更新/删除超过12 每张卡的用户语音记录/...

    react学习课件.rar

    总结来说,"react学习课件.docx"可能会涵盖以上这些知识点,包括React的基本原理、组件化开发、虚拟DOM、状态管理、生命周期方法、Hooks、路由管理、状态管理库以及React Native的介绍。通过学习这些内容,开发者...

    gostack-conceitos-reactive-native

    标题 "gostack-conceitos-reactive-native" 暗示了这个压缩包可能包含一个关于React Native的基础概念的学习资源。React Native是Facebook开发的一款开源框架,它允许开发者使用JavaScript来构建原生移动应用程序。...

    MonkeyNews:学习 React Native

    一份传男也传女的 React Native 学习笔记学习就如同长跑,要想跑的远,就不能跑得太快。背景介绍这段时间了解了一些前端方面的知识,并且用 React Native 写了一个简易新闻客户端 Demo。React Native 和原生开发...

Global site tag (gtag.js) - Google Analytics