React Native: добавление данных в Prop в mapStateToProps - PullRequest
0 голосов
/ 31 мая 2018

У меня есть реквизит, называемый «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,
      };

1 Ответ

0 голосов
/ 31 мая 2018

Я считаю, что лучший способ сделать это на редукторе.

У вас будет state, поэтому добавление будет более естественным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...