我有一个在单击数字时调用的函数 A。函数 A 设置变量的状态并调用另一个函数 B 作为回调。B 现在必须进行 redux 调用以从 API 获取数据,然后调用另一个函数 C,该函数使用从 API 获得的数据生成 pdf。
我面临的问题是在函数 B 中,它正确地从 API 获取数据,但我无法将数据传递给下一个函数 C。
请帮忙
functionA = (record) =>
{
this.setState(
{pdfInvoiceNum: record.no}, ()=>{
this.functionB(record)
});
};
functionB = (record) =>
{
this.props.getDetailForPdf(this.state.pdfInvoiceNum) //=>This sets purchasedetail
this.functionC(this.props.purchasedetail)
}
functionC = (record) =>
{
console.log(record) //Doesn't print anything when I click the first time but prints correct data when I click second time
}
//Click starts here
<a onClick={()=>{this.functionA(record)}}>{text}</a>
以下是电话:
const mapDispatchToProps = dispatch => ({
getPurchaseDetailPdf : (pdfInvoiceNum) => dispatch(fetchPurchaseDetailPdf(pdfInvoiceNum)),
});
const mapStateToProps = (state) => {
purchasedetailpdf: state.purchasesReducer.purchasedetailpdf}
};
购买动作.js
export const fetchPurchaseDetailPdf = (number) => {
console.log("PO is:"+ PONumber)
return (dispatch) => {
dispatch({type: FETCH_START});
var token = localStorage.getItem("token");
axios.get(`${apiUrl}.../${number}`,
).then(({data}) => {
const results = data.map((row, index) => ({
key: index,
name : row.name,
}))
dispatch({type: FETCH_SUCCESS});
dispatch({type: PURCHASEDETAILPDF_DATA, payload: results});
}).catch(function (error) {
dispatch({type: FETCH_ERROR, payload: error.message});
console.log("Error****:", error.message);
});
}
}
购买Reducer.js
import {FETCH_START, FETCH_SUCCESS, FETCH_ERROR, PURCHASEDETAILPDF_DATA} from '../../constants/ActionTypes';
const initialState = {
pending: false,
purchasedetailpdf: [],
error: null
}
export default function purchaseReducer(state = initialState, action) {
switch(action.type) {
case FETCH_START:
return {
...state,
pending: true
}
case FETCH_SUCCESS:
return {
...state,
pending: false,
contracts: action.payload
}
case FETCH_ERROR:
return {
...state,
pending: false,
error: action.error
}
case PURCHASEDETAILPDF_DATA:
return {
...state,
purchasedetailpdf: action.payload,
}
default:
return state;
}
}
export const getPurchaseDetailPdf = state => state.purchasedetailpdf;
export const getPurchaseDetailPdfPending = state => state.pending;
export const getPurchaseDetailPdfError = state => state.error;