如何传递异步数据来调度动作,以便可以在动作创建器中使用它?

时间:2018-10-08 11:43:22

标签: reactjs react-native redux redux-thunk

Redux令人头疼...至少对我来说,是!!!有人可以向我解释如何将通过mapDispatchToProps获取的json [0]传递给动作创建者吗?我做对了吗?我正在使用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 :(得分:1)

  

我如何通过mapDispatchToProps将获取的json [0]传递给我   动作创建者

您必须让onQRRead收到这样的参数:

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

函数参数的名称是任意的。

现在,您可以像以前一样使用它:

this.props.onQRRead(json[0])