У меня есть реквизит, называемый «data», чтобы он изначально заполнялся записями данных до состояния загрузки приложения.То, что я пытаюсь сделать, это добавить «данные» реквизит на основе функции, которую я запускаю в mapDispatchToProps.
Код в настоящее время выглядит следующим образом:
class ListScreen extends React.Component {
static navigationOptions = {
header: null,
};
static propTypes = {
navigation: PropTypes.object.isRequired,
data: PropType.isRequired,
nextBatchOfData: PropTypes.func,
};
getData = () => {
this.props.nextBatchOfData({ some, search, params });
};
render() {
const { data } = this.props;
return (
<View style={styles.container}>
<ScrollView>
<StatusBar barStyle="default" />
<FlatList
data={data}
keyExtractor={({ id }) => `${id}`}
numColumns={2}
/>
</ScrollView>
</View>
);
}
}
const mapStateToProps = state => {
return {
data: [...dataSelectors.getOfferResults(state)], // Attempting to append to existing state..
};
};
const mapDispatchToProps = dispatch => ({
nextBatchOfData: searchParams => dispatch(actions.dataSearch.request(searchParams)),
});
При запуске getData()
функция, nextBatchOfData()
опора будет срабатывать.Однако предыдущее состояние перезаписывается.Есть ли способ обойти это?
Вот часть моего редуктора, где я получаю данные:
[combineActions(actions.dataSearch.success, actions.dataSearch.fail)]: (
state,
{ payload, meta, error }
) => {
const hasResults = payload && !error;
return {
...state,
isLoading: false,
error: error && payload.message,
results: hasResults ? payload : state.results,
};