RN请求网络上拉加载下拉刷新,跳转

路由
import { createStackNavigator } from “react-navigation”;
import App from “./App”;
import Details from “./Details”;

const Route = createStackNavigator({
App: App,
Details: Details
});

export default Route;

APP页面
import React, { Component } from “react”;
import { Platform, StyleSheet, Text, View } from “react-native”;
//RefreshState依赖
import RefreshListView, { RefreshState } from “react-native-refresh-list-view”;

export default class App extends Component {
/**

  • 初始化构造方法
    */
    constructor(props) {
    super(props);
this.state = {
  dataValue: [], //数据源
  refreshState: RefreshState.Idle, //静止状态
  page: 1
};

}

/**

  • 生命周期
    */
    componentDidMount() {
    this.onHeaderRefresh();
    }

//下拉刷新
onHeaderRefresh = () => {
//1.更新状态,下拉状态
this.setState({
refreshState: RefreshState.HeaderRefreshing,
page: 1
});
//2.网络加载
fetch(
https://cnodejs.org/api/v1/topics?page=${ this.state.page }&tab=good&limit=10
)
.then(response => response.json())
.then(responseJson => {
this.setState({
dataValue: responseJson.data,
refreshState: RefreshState.Idle,
page: this.state.page + 1
});
})
.catch(error => {
this.setState({
refreshState: RefreshState.Failure
});
console.warn(error);
});
};

//上拉加载更多
onFooterRefresh = () => {
this.setState({
refreshState: RefreshState.FooterRefreshing
});
//2.网络加载
fetch(
https://cnodejs.org/api/v1/topics?page=${ this.state.page }&tab=good&limit=10
)
.then(response => response.json())
.then(responseJson => {
this.setState({
dataValue: […this.state.dataValue, …responseJson.data],
refreshState: RefreshState.Idle,
page: this.state.page + 1
});
})
.catch(error => {
this.setState({
refreshState: RefreshState.Failure
});
console.warn(error);
});
};

/**

  • 元素渲染
    */
    render() {
    return (

    <RefreshListView
    style={styles.welcome}
    data={this.state.dataValue}
    keyExtractor={(item, index) => index}
    renderItem={({ item }) => (
    <Text
    style={{ width: “100%”, height: 80 }}
    onPress={() => {
    this.props.navigation.navigate(“Details”, {
    abc: item.content
    });
    }}
    >
    {item.title}

    )}
    refreshState={this.state.refreshState}
    onHeaderRefresh={this.onHeaderRefresh}
    onFooterRefresh={this.onFooterRefresh}
    />

    );
    }
    }

/**

  • 样式表
    */
    const styles = StyleSheet.create({
    container: {
    flex: 1,
    backgroundColor: “#F5FCFF”
    },
    welcome: {
    flex: 1
    }
    });
    、、、详情页面
    import React, { Component } from “react”;
    import { View, Text, ScrollView, Dimensions } from “react-native”;
    import HTML from “react-native-render-html”;
    export default class Detils extends Component {
    static navigationOptions = ({ navigation }) => {
    return {
    title: navigation.getParam(“name”).title
    };
    };
    constructor(props) {
    super(props);
    this.state = {
    content: this.props.navigation.getParam(“name”).content
    };
    }

render() {
return (

<HTML
html={this.state.content}
imagesMaxWidth={Dimensions.get(“window”).width}
/>

);
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值