reactnative - 9. 发送http请求
访问量: 1777
参考:https://facebook.github.io/react-native/docs/network
假设我们已经具备了一个接口: 查看siwei.me 的列表 http://siwei.me/interface/blogs/all
1. 新建页面:screens/BlogView.js
import React, { Component} from 'react'; import {Platform, StyleSheet, Text, View, Button, FlatList} from 'react-native' export default class BlogList extends React.Component{ // 1. 要定义好这个 constructor constructor(props){ super(props) // 2. 增加这个state , 用来标记页面是否在加载中 this.state = { isLoading: true } } // 3. 定义这个钩子方法, componentDidMount(){ // 3.1 发起http 请求 return fetch("http://siwei.me/interface/blogs/all") // 3.2 第一次,把response 转换成json .then((response) => { let result = response.json() console.log(result) return result }) // 3.2 把值赋到本地的state变量中 .then((responseJson) => { this.setState({ isLoading: false, dataSource: responseJson.blogs }, function(){} ) // 3.3 这个函数表示没有正常返回时候的处理 }) .catch((error) => { console.error(error) }) } // 4. 开始渲染 render(){ return ( <View style={{flex: 1, paddingTop: 20}}> <FlatList data={this.state.dataSource} renderItem={({item}) => <Text>{item.id}, {item.title}</Text> } keyExtractor={({id}, index) => id } /> </View> ) } }
2. 修改对应的路由文件
import BlogList from 'screens/BlogList' const myNavigator = createStackNavigator( { Home: Home, BlogList: BlogList }, { initialRouteName: "Home" } ) export default createAppContainer(myNavigator)
3. 在Home.js 文件中加上入口:
<Button title = "进入到siwei.me文章列表" onPress = { () => this.props.navigation.navigate("BlogList") } />