Как передать асинхронные данные в действие диспетчеризации, чтобы я мог использовать их в создателе действий? - PullRequest
0 голосов
/ 08 октября 2018

Redux - это харрррд ... По крайней мере, для меня это так !!!Может кто-нибудь объяснить мне, как я могу передать этот извлеченный json [0] через mapDispatchToProps моему создателю действия?И я делаю это правильно?Я использую redux-thunk, это правильный способ его использования?

state = {
    articles: {
      article: []
    }
  };

  qrCodeOnReadHandler = ({ data }) => {
    this.props.onQRRead();
    console.log(this.props.art);
    fetch(data)
      .then(response => response.json())
      .then(json => {
        console.log(json),
          // () => this.props.onQRRead(json[0]),
          this.setState({
            ...this.state,
            articles: {
              ...this.state.articles,
              article: json[0]
            }
          });
      });
  };

подключение redux

const mapStateToProps = state => {
  return {
    art: state.articles.article
  };
};
const mapDispatchToProps = dispatch => {
  return {
    onQRRead: () => dispatch(article())
  };
};

создателей действий

export const fetchedArticle = res => {
  return {
    type: ARTICLE,
    res: res
  };
};

export const article = res => {
  return dispatch => {
    dispatch(fetchedArticle(res));
  };

};

1 Ответ

0 голосов
/ 08 октября 2018

как я могу передать этот извлеченный json [0] через mapDispatchToProps моему создателю действия

Вы должны сделать так, чтобы ваш onQRRead получил аргумент, подобный этому:

const mapDispatchToProps = dispatch => {
  return {
    onQRRead: payload => dispatch(article(payload))
  };
};

Имя параметра функции является произвольным.

Сейчас вы можете использовать его так же, как вы только что это сделали:

this.props.onQRRead(json[0])
...