从调度中获取响应-React Redux

时间:2019-05-30 18:29:44

标签: reactjs redux react-redux redux-thunk

如何从分派操作中获得对组件的响应并在上下文中获取值。

index.jsx:

    componentWillMount() {
        this.context.store.dispatch(getConfigSettings());
    }

调度电话:

export function getConfigSettings(params) {
    return (dispatch) => {
        dispatch(requestConfig());
        admin.getConfig(params,
            (response) => {
                return dispatch(receivedConfig(response));
            },
            (error) => {
                return dispatch(failedConfig(error));
            }
        );
    };
}

export function getConfig(params, onSuccess, onFailure) {
    const url = `${process.env}/admin/data`;
    return $.get(url,
        (response) => {
            onSuccess(response);
        }).fail((error) => {
        onFailure(error);
    });
}

我检查了响应的值是否正确。但是如何在index.jsx中访问该值 我必须在表中显示这些值。

1 个答案:

答案 0 :(得分:1)

虽然您实际上仅应使用mapStateToProps()从存储中检索所需的数据,但是您可以返回一个Promise,该Promise可以解析响应或拒绝数据,如下所示:

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if (s.getName() == "Sheet1") { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if (r.getColumn() == 5) { //checks the column
      var nextCell = r.offset(0, 1);
      //if( nextCell.getValue() !== '' ) //is empty?
      nextCell.setValue(new Date().setFontColor('green');
      }

然后在组件中,您可以使用export function getConfigSettings(params) { return (dispatch) => { dispatch(requestConfig()); return new Promise((resolve, reject) => { admin.getConfig(params, (response) => { dispatch(receivedConfig(response)); return resolve(response); // or return resolve(dispatch(receivedConfig(response))); }, (error) => { dispatch(failedConfig(error)); return reject(error); // or return reject(dispatch(failedConfig(error))); } ); } }; } then()访问已解决的响应或拒绝的错误:

catch()

这里是example的动作。

我真的建议您基于Promise进行HTTP调用,例如fetch,以避免需要回调。 componentWillMount() { this.context.store.dispatch(getConfigSettings()) .then(response => console.log(response)) .catch(err => console.log(err); } 非常适合诺言。

希望有帮助!