Как передать переменную при отправке функции выборки в компоненте реакции? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть приложениеact-redux, которое извлекает данные с моего сервера узлов, каждый раз, когда мне нужно извлечь что-то, мне нужно создать одно и то же действие, где я изменяю значение в fetch, вот вопросы: Как я могу передать переменную, чтобыизбежать дублирования кода в такой ситуации?

export function fetchProducts() {
return dispatch => {
  dispatch(fetchProductsBegin());
  return fetch("/api/followers")
    .then(handleErrors)
    .then(res => res.json().then(console.log(res)))
    .then(json => {
      dispatch(fetchProductsSuccess(json));
      return json;
    })
    .catch(error => dispatch(fetchProductsError(error)));
};
  }

Затем я вызываю fetchProduct:

class ProductList extends React.Component {  
  componentDidMount() {
    this.props.dispatch(fetchProducts());
  }

Я хочу получить результат, при котором я вызываю fetchProducts и помещаю переменную, затем каждый раз, используя одно и то же действие.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Что касается структуры вашего кода, вы должны использовать библиотеку Axios для вызова API, использовать обещание ожидания вызова API вместо отправки fetchProductsBegin.

in this case, you can rewrite the code as below:
export function fetchProducts(id) {
return dispatch => {
  dispatch(fetchProductsBegin(id));
  return fetch(`/api/followers/${id}`)
  //...
}

callфункция

  componentDidMount() {
    this.props.dispatch(fetchProducts(id));
  }
0 голосов
/ 11 февраля 2019

Вы можете использовать следующее:

// in component: 
this.props.dispatch(fetchProducts(id));
// in function
export function fetchProducts(id) {

Более того, вы можете использовать

class ProductList extends React.Component {  
  componentDidMount() {
   this.props. fetch(id);
}
const mapDispatchToProps = (dispatch) => ({
  fetch: (id) => dispatch(fetchProducts(id))
});
export default connect(null, mapDispatchToProps)(ProductList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...