Как использовать реквизит для метода в mapDispatchToProps? - PullRequest
0 голосов
/ 25 января 2020

Я хочу использовать реквизит, через который я получаю mapStateToProps в mapDispatchToProps. Как я могу это сделать?

const mapStateToProps = (state) => {
  return {
      resultItems: res,
      loading: state.loading,
      lastQuery: state.lastQuery,
      selectedCat: state.selectedCat
  }

};

const mapDispatchToProps = (dispatch, ownProps) => ({
    sendClickedQuery(selectedCat) {

        // Use props as parameters here
        dispatch(mutations.sendQuery(lastQuery, selectedCat));
    }
});

export const ConnectedMain = connect(mapStateToProps, mapDispatchToProps)(Main);

1 Ответ

1 голос
/ 25 января 2020

Вы можете использовать mergeProps, который является необязательным параметром соединения, например:

const mapStateToProps = (state) => {
  return {
      resultItems: res,
      loading: state.loading,
      lastQuery: state.lastQuery,
      selectedCat: state.selectedCat
  }

};

const mapDispatchToProps = (dispatch, ownProps) => ({
    sendClickedQuery(selectedCat) {
        dispatch(mutations.sendQuery(lastQuery, selectedCat));
    }
});

const mergeProps = (propsFromState, propsFromDispatch) => (
    {
      ...propsFromState,
      ...propsFromDispatch,
      sendQuery: propsFromDispatch.sendClickedQuery(selectedCat) {
        dispatch(mutations.sendQuery(propsFromState.lastQuery, selectedCat));
    }
    }
  );

export const ConnectedMain = connect(mapStateToProps, mapDispatchToProps, mergeProps)(Main);

И теперь вы можете назвать его как props.sendQuery. Надеюсь, что это работает для вас.

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