2017-06-27 36 views
4

當前行爲:React-Native:FlatList onRefresh不會調用上拉。

我試圖通過拉起視圖來更新從服務器獲取的列表。當我做onRefresh不會觸發。

我已經在setState函數的回調中設置了GET請求,但這似乎沒有做任何事情。

預期的行爲:

在視圖上拉起調用onRefresh功能。

代碼:

... 
    constructor(props) { 
    super(props); 
    this.state = { 
     stories: [], 
     isFetching: false, 
    }; 
    } 
    componentDidMount() { this.fetchData() } 
    onRefresh() { 
    this.setState({ isFetching: true }, function() { this.fetchData() }); 
    } 
    fetchData() { 
    var that = this; 
    axios.get('http://192.168.0.13:3000/api/story/get/by/geo') 
     .then((res) => { 
     that.setState({ stories: res.data, isFetching: false }); 
     that.props.dispatch(StoryActions.setStories(res.data)) 
     }) 
    } 
    render() { 
    return (
     <ScrollView> 
     <FlatList 
      onRefresh={() => this.onRefresh()} 
      refreshing={this.state.isFetching} 
      data={this.state.stories} 
      keyExtractor={(item, index) => item.id} 
      renderItem={({item}) => (<StoryFeed story={item} id={item.id} />)} 
      /> 
     </ScrollView> 
    ) 
    } 

版本信息

陣營母語:0.45.0

節點:7.4.0

+0

我會認爲'onRefresh'是放錯它的地方。爲什麼不把它放在'render()'中?也許我誤解了,但使用這樣的刷新功能似乎有點擊敗功能代碼的整個目的...... –

+0

根據文檔(https://facebook.github.io/react-native/docs/ flatlist.html)onRefresh是FlatList的一個屬性。不知道你將如何在渲染。 – dmr07

+0

這很好,但我不認爲當你認爲它會被調用時,onRefresh會被調用。在函數式編程中,比如JS6 w/React + Redux,你不會改變狀態,你會創建一個新的狀態。你的狀態樹沒有改變,所以沒有建立新的狀態。 –

回答

相關問題