React Native Flatlist ListItem called many times after initial render

后端 未结 2 1121
你的背包
你的背包 2020-12-22 06:45

Flatlist component as below

 item.ID.toString()}
 renderItem={this.renderItem}
 onRefresh={this.         


        
相关标签:
2条回答
  • 2020-12-22 07:28

    Try the following:

    add to state a boolean value (you can name it "wasFetched").

    Then change the componentDidMount like this:

    componentDidMount() {
         if(this.state.wasFetched === false) {
              this.setState({ wasFetched: true }, () => this.makeRemoteRequest())
         }
    }
    
    0 讨论(0)
  • 2020-12-22 07:41

    An Update

    Please Find the entire code of Flatlist component

    import React, { PureComponent } from "react";
    import { View, FlatList } from "react-native";
    import { ListItem } from "react-native-elements";
    import FL from "../screens/FL";
    import FL1 from "../screens/Fl1";
    
    class FlatListDemo extends PureComponent {
      constructor(props) {
        super(props);
    
        this.state = {
          loading: false,
          data: [],
          error: null,
          refreshing: false,
        };
      }
    
      componentDidMount() {
        this.makeRemoteRequest();
      }
    
      makeRemoteRequest = () => {
        const url = `https://jsonplaceholder.typicode.com/posts`;
        this.setState({ loading: true });
    
        fetch(url)
          .then((res) => res.json())
          .then((res) => {
            this.setState({
              data: res,
              error: res.error || null,
              loading: false,
              refreshing: false,
            });
          })
          .catch((error) => {
            this.setState({ error, loading: false });
          });
      };
    
      renderItem = ({ item }) => {
        return <ListElement onPress={() => this.rowData(item)} item={item} />;
      };
    
      render() {
        if (this.state.loading === true) {
          return <View></View>;
        } else {
          return (
            <View>
              <FlatList
                data={this.state.data}
                keyExtractor={(item) => item.ID.toString()}
                renderItem={this.renderItem}
                onRefresh={this.onRefresh}
                refreshing={this.state.refreshing}
                ListFooterComponent={this.renderFooter}
              />
            </View>
          );
        }
      }
    }
    
    export default FlatListDemo;
    
    0 讨论(0)
提交回复
热议问题