如何从分派操作中获得对组件的响应并在上下文中获取值。
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中访问该值 我必须在表中显示这些值。
答案 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);
}
非常适合诺言。
希望有帮助!