基於React Native構建的仿京東客戶端(四)
實現產品列表卡檢視必須新增2個檔案ListItem.js和ProductList.js,請注意蘋果手機React-Native預設是不支援https協議的:
ListItem.js檔案完整的程式碼如下:
import React,{Component} from 'React'; import { TouchableWithoutFeedback, Image, Animated, View, Text } from 'react-native'; export default class ListItem extends Component { render() { const { id, itemWidth, image, wname, jdPrice, onPressItem } = this.props //console.log(onPressItem) return ( <TouchableWithoutFeedback style={{flex:1,alignItems:'center'}} onPress = {() => onPressItem(id)}> <View style = {{marginTop: 2, marginBottom: 2, paddingRight: 4, }}> <Image style={{ width: itemWidth, height: 200 }} source={image} /> <Text numberOfLines={4} style={{ width: itemWidth, flexWrap: 'wrap', fontSize: 12, color: 'black', flex: 1, paddingLeft: 5, paddingRight: 5, height: 65, backgroundColor: 'white' }} >{wname}</Text> <View style={{flexDirection:'row',justifyContent: 'space-around',paddingRight: 10,backgroundColor: 'white',paddingBottom: 5}}> <Text style={{ flex: 1, alignSelf: 'flex-start', textAlign: 'left', paddingLeft: 5, fontSize: 13, color: '#f15353' }} >¥{jdPrice}</Text> <TouchableWithoutFeedback> <View style={{ width:50, height:20, backgroundColor: 'pink', borderRadius:30, justifyContent: 'center', alignItems: 'center', }} > <Text style={{color:'#f15353',fontSize:12,textAlign:'center'}}>看相似</Text> </View> </TouchableWithoutFeedback> </View> </View> </TouchableWithoutFeedback> ); } }
ProductList.js檔案完整的程式碼如下:
import React,{Component} from 'React'; import { StyleSheet, FlatList, View, Dimensions } from 'react-native'; import ListItem from './ListItem'; const SCREEN_WIDTH = Dimensions.get('window').width; export default class ProductList extends Component { state = { columns: 2, key: 1, array: [], } constructor(props) { super(props) this.getProducts = this.getProducts.bind(this) } getProducts() { //JSON.stringify() 方法是將一個JavaScript值(物件或者陣列)轉換為一個 JSON字串 //JSON.parse() 方法用於將一個 JSON 字串轉換為物件 fetch('http://m.jd.com/index/recommend.action?_format_=json&page=1',{ method: 'GET' }).then((response)=> { return response.json() }).then((respnoseJson) => { return JSON.parse(respnoseJson.recommend) }).then((recommend) => { // console.log(recommend.wareInfoList) let newArray = this.state.array.slice() let concatArray = newArray.concat(recommend.wareInfoList) this.setState({ array: concatArray }) }).catch((error) => { console.warn(error); }).done(); } componentDidMount(){ this.getProducts() } onPressingItem(wareId) { //console.log(wareId) let url = 'http://item.m.jd.com/product/' + wareId + '.html'; this.props.nav.push({ id: 'webview', title: 'webview', url: url }); } render() { const { columns, key, array } = this.state return ( <View style = {styles.container}> <FlatList key = {key} numColumns = {columns} data = {array} renderItem = {({ item, index }) => { return <ListItem id = {item.wareId} itemWidth = {SCREEN_WIDTH / columns - 2 } image = {{ uri: item.imageurl }} wname = { item.wname } jdPrice = { item.jdPrice } onPressItem = {this.onPressingItem} /> }} keyExtractor = { (item, index) => { return item.wareId } } /> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#EEE9E9', justifyContent: 'space-around', flexDirection:'row', }, })
安卓和蘋果模擬器中執行的效果截圖如下:
相關推薦
基於React Native構建的仿京東客戶端(四)
實現產品列表卡檢視必須新增2個檔案ListItem.js和ProductList.js,請注意蘋果手機React-Native預設是不支援https協議的:ListItem.js檔案完整的程式碼如下:import React,{Component} from 'React';
基於React Native構建的仿京東客戶端(三)
ImageButton.js檔案完整的程式碼如下:import React, { Component } from 'react';import { StyleSheet, Text, View, Image, TouchableWithoutFeedback,}
基於React Native構建的仿京東客戶端(五)如何實現首頁 分類 發現 購物車 我的 Tab導航頁面
新建4個用紅色方框標識的檔案,如下圖所示:myths-Mac:JdApp myth$ yarn add react-native-tab-navigatorCartPage.js檔案完整的程式碼如下:import React, { Component } from 'reac
從0開始寫一個基於Flutter的開源中國客戶端(4)——Flutter佈局基礎
我的上一篇部落格中記錄了Flutter基礎和一些常用的Widgets,這一篇中主要記錄Flutter常用的一些佈局,希望自己在記錄的同時能溫故知新,同時給初學者一些幫助。 Flutter佈局容器 在Android開發中,我們使用xml檔案寫佈局,有諸
通過Openlayers中getGetFeatureInfoUrl方法請求WMS服務資料到客戶端(Browser)(基於Geoserver伺服器)
本文基於tomcat伺服器進行網站開發,geoserver管理GIS資料服務,在tomcat伺服器中訪問geoserver時出現跨域訪問被拒絕的杯具,遂本文要有理有據的闡述一下如何解決這個跨域訪問geoserver中的GIS資料並以JSON資料格式返回到前端。 首先,
從0開始寫一個基於Flutter的開源中國客戶端(8)——外掛的使用
上一篇中我記錄了基於Flutter的開源中國客戶端裡網路請求和資料儲存的部分,本篇記錄的是app中外掛的使用,由於很多功能並沒有內建到Flutter中,所以我們需要引入一些外掛來幫助我們完成某些功能,比如app內網頁的載入,相簿選擇照片等。 搜尋外掛包
從0開始寫一個基於Flutter的開源中國客戶端(5)——App整體佈局框架搭建
上一篇中我記錄了Flutter中常用的一些佈局,本篇開始開發基於Flutter的開源中國客戶端了。在本篇部落格中,要實現的是一個App的整體框架,包括頁面底部的Tab導航選單、頁面的側滑選單以及跳轉到新的頁面這幾個功能。希望自己在記錄的同時能溫故知新,同時
從0開始寫一個基於Flutter的開源中國客戶端(6)——各個靜態頁面的實現
上一篇中我記錄了基於Flutter的開源中國客戶端的整體佈局框架的搭建,本篇記錄的是每個頁面的靜態實現,關於具體的資料載入和儲存,放在下一篇中記錄,希望自己在溫故知新的同時,能給Flutter初學者一些幫助。 在基於Flutter的開源中國客戶端中,使
MFC基於Socket建立伺服器端和客戶端(TCP)
MFC Socket網路通訊程式設計 最近因為一個專案需要進行區域網絡通訊,向工作單位的軟體工程師請教了一下需要用到哪些知識,然後博主就自學了一遍windows網路通訊程式設計原理,然後就在網上找了一大堆例子,但實際執行效果並不佳,花了大概一週多的時間總
手把手教你仿一個知乎日報Android客戶端(一)多圖
本文為作者原創,轉載請註明出處@大蘑菇的部落格 圖片託管服務由貼相簿提供 作為一隻網蟲,肯定是經常泡在網路的海洋裡,有一天偶然看到了知乎日報的API,各方面介面都還挺全面,於是本著“不用白不用”的真理,我決定仿一個知乎日報Adnroid客戶端。
手把手教你仿一個知乎日報Android客戶端(三)主頁面設計
各位朋友,從本篇文章和開始,手把手教你仿一個Android客戶端就要正式開始探究怎樣實現我們前面的那些需求了。在此開發我們將會使用git作為版本控制工具,並且將程式碼託管到github,好啦,廢話少說,咱們開工。 一、建立專案 怎麼建立專案大家應該都知道
基於TCP的伺服器端/客戶端(二)---------網路程式設計(Linux----C)
基於TCP的伺服器端/客戶端(二)---網路程式設計(Linux--C) 在基於TCP的伺服器端/客戶端(一)中的回聲客戶端存在的問題: 下列是echo_client.c中的程式碼: write(so
Redis連接的客戶端(connected_clients)數過高或者不減的問題解決方案
http lib last 知識庫 nbsp reac nts 關閉連接 comm 最近的項目上使用ServiceStack.Redis上了redis緩存,其中遇到了很多問題。。 比如說 某一天發現redis做的緩存竟然失效了,然後查了下日誌 報錯max number o
Redis學習筆記--Redis客戶端(三)
本機 -c trace 圖形 tro cli family 毫秒 ati 1.Redis客戶端 1.1 Redis自帶的客戶端 (1)啟動 啟動客戶端命令:[root@kwredis bin]# ./redis-cli -h 127.0.0.1 -p 6379
zabbix系列之使用ansible批量部署zabbix客戶端(二)
zabbix_agent ansible 批量部署客戶端 ansible ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
PostgreSQL增強版命令行客戶端(pgcli)
sta alt postgres 圖片 href 分享圖片 lan https TP 效果: 安裝: https://www.pgcli.com/install 官網: https://www.pgcli.com/ PostgreSQL增強版命令行客戶端(pg
使用SVN客戶端(Windows)
rto pro logs tortoise win .cn blog .html 服務端 SVN服務端環境參考:https://www.cnblogs.com/pzk7788/p/9446424.html這裏我使用一臺雲服務器(139.xxx.xxx.89)作為SVN服務端
記一次邊鋒客戶端(C++)實習生面試
第一篇部落格,也是第一次寫部落格,就記一次準備的不是很充分的面試吧。 總體來說應該不算難,還是挺簡單的。 到那邊後先填一張資訊表,然後hr會過來讓你做一套試卷,選擇題和簡答題。大概包括引用、運算子過載、模板類的靜態變數、建構函式等相關,選擇題比較基礎。簡答題包括lambd
新榜微信文章抓取客戶端(APSpider)
原始碼下載請至 https://github.com/inmyjs/apspider 這是以前給新媒體運營同事寫的爬蟲軟體,用了一段時間就沒用了(唉、氣死我了)。 目前只抓取了新榜的日榜(周榜、月榜類似,換下地址即可)下,各行業的前50個公眾號下的7天熱門文章和最新發布
以太坊go-ethereum客戶端(三)兩種全節點啟動模式
這篇部落格介紹一下go-ethereum全節點的兩種啟動模式:主網路快速啟動和測試網路快速啟動。這也是客戶端所提供的兩種啟動方式,直接拿來使用即可。下面具體介紹一下使用方法。 主網路快速啟動 其實,我們大多數人再使用節點的時候並不關係之前的歷史資料。我們啟動