1. /**
  2. * Sample React Native App
  3. * https://github.com/facebook/react-native
  4. */
  5. 'use strict';
  6.  
  7. var React = require('react-native');
  8. var {
  9. AppRegistry,
  10. StyleSheet,
  11. Text,
  12. Image,
  13. View,
  14. TextInput,
  15. ListView,
  16. } = React;
  17. var GIT_URL = 'https://api.github.com/search/repositories?q=';
  18.  
  19. var AwesonProject = React.createClass({
  20. /*-- lifecycle --*/
  21. getInitialState: function() {
  22. return {
  23. // (row1, row2) => row1 !== row2:如果两次的数据不同的话,告诉数据源该数据发生了改变
  24. dataSource: new ListView.DataSource({
  25. rowHasChanged: (row1, row2) => row1 !== row2,
  26. }),
  27. };
  28. },
  29. render: function() {
  30. var listViewContent;
  31. if (this.state.dataSource.getRowCount() === 0) {
  32. listViewContent =
  33. <Text>
  34. there's nothing to search , please have another key to tap.
  35. </Text>;
  36. } else {
  37. listViewContent =
  38. <ListView
  39. ref='listview'
  40. dataSource={this.state.dataSource}
  41. renderRow={this.renderRow}
  42. automaticallyAdjustConntentInsets={false}
  43. keyboardShouldPersistTaps={true}
  44. showsVerticalScrollIndicator={true} />
  45. }
  46. return (
  47. <View style={styles.container}>
  48. <TextInput
  49. autoCapitalize='none'
  50. autoCorrect={false}
  51. placeholder='search forr git project...'
  52. onEndEditing={this.onSearchChange}
  53. style={styles.searchView}>
  54. </TextInput>
  55. {listViewContent}
  56. </View>
  57. );
  58. },
  59.  
  60. /*-- private method --*/
  61.  
  62. //点击搜索响应数据请求
  63. onSearchChange: function(event) {
  64. var serarchText = event.nativeEvent.text.toLowerCase();
  65. var queryURL = GIT_URL + encodeURIComponent(serarchText);
  66.  
  67. fetch(queryURL)
  68. .then((response) => response.json())
  69. .then((responseData) => {
  70. if (responseData.items) {
  71. this.setState({
  72. dataSource : this.state.dataSource.cloneWithRows(responseData.items)
  73. });
  74. }
  75. })
  76. .done();
  77. },
  78.  
  79. //渲染列表中的每一行数据
  80. renderRow: function(item) {
  81. return (
  82. <View>
  83. <View style={styles.row}>
  84. <Image
  85. source={{uri:item.owner.avatar_url}}
  86. style={styles.Img}>
  87. </Image>
  88. <View>
  89. <Text style={styles.name}>
  90. {item.full_name}
  91. </Text>
  92. <Text style={styles.name}>
  93. Star:{item.stargazers_count}
  94. </Text>
  95. </View>
  96. </View>
  97. <View style={styles.cellBorder}></View>
  98. </View>
  99. );
  100. },
  101.  
  102. });
  103.  
  104. /*布局样式*/
  105. var styles = StyleSheet.create({
  106. container: {
  107. flex: 1,
  108. // justifyContent: 'center',
  109. // alignItems: 'center',
  110. backgroundColor: '#F5FCFF',
  111. },
  112. searchView:{
  113. marginTop:30,
  114. padding:5,
  115. margin:5,
  116. fontSize:15,
  117. height:30,
  118. backgroundColor:'#EAEAEA'
  119. },
  120. row:{
  121. flexDirection:'row',
  122. padding:8,
  123. },
  124. name:{
  125. marginBottom:8,
  126. marginLeft:8,
  127. },
  128. Img:{
  129. width:50,
  130. height:50,
  131. },
  132. cellBorder:{
  133. height:1,
  134. marginLeft:2,
  135. backgroundColor:'#EAEAEA',
  136. }
  137. });
  138.  
  139. AppRegistry.registerComponent('AwesonProject', () => AwesonProject);

React Native ——实现一个简单的抓取github上的项目数据列表的更多相关文章

  1. 使用git拉取github上的项目

    一. 安装Git 去Git官网,下载安装包,一路点next,默认安装. 安装之后,在空白处右键,菜单显示有 Git GUI Here 和 Git Bash Here ,表示Git安装成功. 二. 配置 ...

  2. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现

    我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...

  3. 如何用 React Native 创建一个iOS APP?

    诚然,React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 Reac ...

  4. 如何用 React Native 创建一个iOS APP?(三)

    前两部分,<如何用 React Native 创建一个iOS APP?>,<如何用 React Native 创建一个iOS APP (二)?>中,我们分别讲了用 React ...

  5. 如何用 React Native 创建一个iOS APP?(二)

    我们书接上文<如何用 React Native 创建一个iOS APP?>,继续来讲如何用 React Native 创建一个iOS APP.接下来,我们会涉及到很多控件. 1 AppRe ...

  6. React Native创建一个APP

    React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 React 抽 ...

  7. arpspoof+driftnet+ ARP欺骗简单图片抓取

    arpspoof+driftnet+ ARP欺骗简单图片抓取 driftnet是一款简单而使用的图片捕获工具,可以很方便的在网络数据包中抓取图片.该工具可以实时和离线捕获指定数据包中是图片 环境 受害 ...

  8. [python应用]python简单图片抓取

    前言 emmmm python简单图片抓取 1 import requests 2 import threading 3 import queue 4 from subprocess import P ...

  9. 抓取摩拜单车API数据,并做可视化分析

    抓取摩拜单车API数据,并做可视化分析 纵聊天下 百家号|04-19 15:16 关注 警告:此篇文章仅作为学习研究参考用途,请不要用于非法目的. 摩拜是最早进入成都的共享单车,每天我从地铁站下来的时 ...

随机推荐

  1. 设计模式之美:Prototype(原型)

    索引 别名 意图 结构 参与者 适用性 缺点 效果 相关模式 命名约定 实现 实现方式(一):使用一个原型管理器. 实现方式(二):使用浅拷贝实现克隆(Clone)操作. 实现方式(三):使用深拷贝实 ...

  2. Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过

    Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...

  3. Unity3D——相机跟随物体移动

    public Transform target; public float moveSmooth=5f; Vector3 offset; void Start () { offset = transf ...

  4. listen--监听数量

    listen--监听数量 #include <sys/socket.h> int listen(int sockfd, int backlog); /* backlog指定了该套接口排队的 ...

  5. [异常] MyEclipse Deploy点不开 An internal error occurred during: "Launching MVC on Tomcat 6.x". java.lang.NullPointerException

    >_<" 今天做struts时,工程写好了,可是点击MyEclipse上面的Delopy不会跳出常规的窗口,导致各种坑~ >_<" 如果直接运行还出现下面的 ...

  6. [游戏学习28] MFC 时钟

    >_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...

  7. OS——进程简答题(1)

    1,叙述进程和程序的主要区别. 解:进程和程序是两个既有联系又有区别的两个概念,它们的主要区别如下: (1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念.而进程是程序在处理机上的 ...

  8. ubuntu下firefox无法看bilibili解决方案

    突然发现,在ubuntu中使用firefox打开bilibili网站无法加载视频与弹幕,在网上搜到的可能的问题为:linux下的firefox使用的flash player是老版本,bilibili不 ...

  9. How Tomcat works — 八、tomcat中的session管理

    在使用shiro的session的时候感觉对于tomcat中session的管理还不是特别清楚,而且session管理作为tomcat中比较重要的一部分还是很有必要学习的. 目录 概述 session ...

  10. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(三)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...