Реагировать на избыточное использование состояния в создателе действия - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь создать создателя действий с помощью метода, который раньше был в логике моего компонента c. Я понимаю, как превратить это в создателя действия; однако я не уверен, как работать с троичным оператором, так как он опирается на что-то, поступающее из местного штата. this.state.searchTerm , а также this.state.data.currentPage необходимы для того, чтобы код работал так, как мне нужно.

export const loadMoreMovies = () => {
    return dispatch => {
        const searchEndpoint = `${SEARCH_BASE_URL}${this.state.searchTerm}&page=${this.state.data.currentPage + 1}`;
        const popularEndpoint = `${POPULAR_BASE_URL}&page=${this.state.data.currentPage + 1}`;

        const endpoint = this.state.searchTerm ? searchEndpoint : popularEndpoint;

        dispatch(fetchMovies(endpoint, 'search'));
    }
}

Кроме того, кто-нибудь может подтвердить для меня то, что вы видите в создателе действия? Есть ли причина для создания редуктора для создателя этого действия? Кажется, я не вижу причин для этого, поскольку он не используется для изменения состояния, но я хотел бы, чтобы другие об этом думали. Спасибо

1 Ответ

1 голос
/ 02 марта 2020

При работе с redux-thunk функция, которую вы возвращаете из создателя действия, может иметь два аргумента, второй из которых является функцией, которая дает вам текущее состояние:

export const loadMoreMovies = () => {
  return (dispatch, getState) => {
    const state = getState();
    const searchEndpoint = `${SEARCH_BASE_URL}${state.searchTerm}&page=${state.data.currentPage + 1}`;
    const popularEndpoint = `${POPULAR_BASE_URL}&page=${state.data.currentPage + 1}`;



    const endpoint = state.searchTerm ? searchEndpoint : popularEndpoint;

    dispatch(fetchMovies(endpoint, 'search'));
  }
}
...