我在試圖找出如何在不傳遞(新)變量的情況下觸發新現代RefreshContainer
中的刷新?在沒有(新)變量的現代RefetchContainer中強制重新讀取
我正在尋找最好的方法來實現良好的'拉到刷新React本機列表,應該只需重新查看原始查詢 - 不需要變量?
根據文檔(https://facebook.github.io/relay/docs/api-cheatsheet.html)這應該使用
this.props.relay.refetch({}, callback, {force: true})
是可能的,但我得到一個錯誤說 「不確定是不是( '評估taggedNode.modern')的對象」
查詢工作得很好,如果我使用普通舊FragmentContainer
代替,但我只想簡單的拉到刷新功能:-)
編輯 添加更多的代碼爲了清晰。還更新的呼叫,以反映變化的API,包括渲染變量,傳遞null
class HistoryList extends React.PureComponent<void, Props, State> {
state = { refreshing: false };
_renderRow = ({ item }) => {
return <HistoryListItem item={item.node} />;
};
_renderHeader = ({ section }) => {
return (
<Text style={[cs.breadText, _styles.sectionHeader]}>
{section.title}
</Text>
);
};
_onRefresh =() => {
this.setState({ refreshing: true });
this.props.relay.refetch({}, null, this._onRefreshDone(), { force: true });
};
_onRefreshDone =() => {
this.setState({ refreshing: false });
};
_sortDataIntoSections = (edges: Array<Node>) => {
return _.chain(edges)
.groupBy(element => {
return moment(element.node.huntDate).format('MMMM YYYY');
})
.map((data, key) => {
return { title: key, data: data };
})
.value();
};
render() {
return (
<View style={_styles.container}>
<SectionList
renderSectionHeader={this._renderHeader}
sections={this._sortDataIntoSections(
this.props.entries.allJournalEntries.edges
)}
renderItem={this._renderRow}
keyExtractor={(item, index) => item.node.__id}
onRefresh={this._onRefresh}
refreshing={this.state.refreshing}
/>
</View>
);
}
}
export default createRefetchContainer(
HistoryList,
graphql`
fragment HistoryList_entries on Viewer {
allJournalEntries(orderBy: huntDate_DESC) {
count
edges {
node {
huntDate
...HistoryListItem_item
}
}
}
}
`
);
你說得對!但不幸的是,它也不起作用: - / – jhm