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
我會認爲'onRefresh'是放錯它的地方。爲什麼不把它放在'render()'中?也許我誤解了,但使用這樣的刷新功能似乎有點擊敗功能代碼的整個目的...... –
根據文檔(https://facebook.github.io/react-native/docs/ flatlist.html)onRefresh是FlatList的一個屬性。不知道你將如何在渲染。 – dmr07
這很好,但我不認爲當你認爲它會被調用時,onRefresh會被調用。在函數式編程中,比如JS6 w/React + Redux,你不會改變狀態,你會創建一個新的狀態。你的狀態樹沒有改變,所以沒有建立新的狀態。 –