Добавить несколько параметров для URL API выборки в Redux? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь добавить несколько параметров в выборку API, используя Redux.Я могу заставить его работать (maxDist вы видите ниже в вызове API), но я хочу добавить параметры minStars и maxRes, но не уверен, как бы я добавил более одного.Я попытался добавить больше параметров в функцию search(), но она будет использовать только один аргумент.Вот что у меня есть:

Вызов API:

export default {
  search(maxDist) {
    const url = `${API_URL}&maxDistance=${maxDist}&minStars=${minStars}&maxResults=${maxRes}`;
    console.log(url);
    return fetch(url)
      .then(response => response.json())
      .then(result => {
        return result.items;
      });
  }
};

Сторона Redux:

const MAX_DIST_CHANGED = "MAX_DIST_CHANGED";

const initialState = {
  items: [],
  maxDist: "",
  minStars: "",
  maxRes: ""
};

export const actions = {
  maxDistChanged(maxDist) {
    return {
      type: MAX_DIST_CHANGED,
      maxDist
    };
 getItems(maxDist) {
    return {
      type: "ITEMS",
      payload: API.search(maxDist)
    };
  }
};

export function reducer(state = initialState, action) {
  switch (action.type) {
    case MAX_DIST_CHANGED: {
      return {
        ...state,
        maxDist: action.maxDist
      };
    }
 case "ITEMS_FULFILLED": {
      return {
        ...state,
        loading: false,
        items: action.payload
      };
    }
    default:
      return state;
  }
}

App.js:

  handleSubmit = e => {
    e.preventDefault();
    this.props.onGetItems(
      this.props.maxDist
    );
  };
  handleChange = event => this.props.onMaxDistChanged(event.target);

function mapDisatchToProps(dispatch) {
  return {
    onMaxDistChanged(maxDist) {
      dispatch(actions.maxDistChanged(maxDist));
    }
 onGetItems(maxDist) {
      dispatch(actions.getItems(maxDist));
    }
  };
}

Как добавить minStars и maxRes в вызов API?Кажется, работает только один параметр.Спасибо!

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