我的代码中有两个操作。一种是根据年月和用户id获取数据。
另一个是基于其他一些参数更新数据。
第二个方法成功后,我想运行第一个操作,这样我的组件将使用更新的内容重新渲染。
export const GetConsultantProjects = (userId, month, year) => {
return (dispatch) => {
dispatch({type: START_LOADING})
globalAxios().get(`/api/v1/time_registrations`, {
params: {
user_id: userId,
month: month,
year: year
}
}).then(resultSet => {
if (resultSet) {
dispatch({type: STOP_LOADING})
dispatch({type: GET_CONSULTANT_PROJECTS, payload: resultSet.data})
}
}).catch(err => {
if (err.response) {
console.log(err)
}
})
}
}
export const UpdateProjectTime = (hour, date, projectId, userId, token, activity, timeId) => {
let bodyFormData = new FormData();
if(token && token.length !== 0) {bodyFormData.append('project[project_times_attributes][0][token]', token);}
if(activity && activity.length !== 0) {bodyFormData.append('project[project_times_attributes][0][activity]', activity);}
if(timeId && timeId.length !== 0) {bodyFormData.append('project[project_times_attributes][0][id]', timeId);}
bodyFormData.append('project[project_times_attributes][0][user_id]', userId);
bodyFormData.append('project[project_times_attributes][0][date]', date);
bodyFormData.append('project[project_times_attributes][0][project_id]', projectId);
bodyFormData.append('project[project_times_attributes][0][hours]', hour);
return (dispatch) => {
dispatch({type: START_LOADING})
globalAxios().put(`/api/v1/time_registrations/${projectId}`, bodyFormData)
.then(resultSet => {
if (resultSet) {
dispatch(GetConsultantProjects()) // I want to run it again but I have no params here. How to pass them and run it again??
dispatch({type: UPDATE_PROJECT_TIME, payload: resultSet.data})
dispatch({type: STOP_LOADING})
}
}).catch(err => {
if (err.response) {
console.log(err)
}
})
}
}
dispatch(GetConsultantProjects())
我想再运行一次,但这里没有参数。比如月份、年份和user_id。
如何通过它们并再次运行??
当调用一个函数并通过查看第一个函数的成功状态来调用另一个函数时,您肯定需要一种方法来处理第一个功能的成功状态。下面的沙箱是实现您在这里提到的东西的示例解决方案。我正在做的是从作为道具的第一个函数中获得成功响应,并在componentWillUpdate中启动第二个函数。
这是通过查看react开发人员中的其他函数行为来调用函数的最流行版本。我希望这能对解决你的问题有所帮助。如果有什么要添加或需要更改的地方,请在评论部分提及。
沙盒链接:https://codesandbox.io/s/call-function-by-looking-at-another-functions-status-rn7hg
在新窗口中打开解决方案并进行调试。您将看到控制台日志是如何生成的,以及调用函数的流程是什么。