Sli*_*lim 5 reactjs react-hooks
我useEffect在我的组件中使用以执行异步函数。
useEffect(() => {
scoreRequest(answers);
}, [answers]);
Run Code Online (Sandbox Code Playgroud)
然后我收到这个警告:
React Hook useCallback has a missing dependency: 'scoreRequest'. Either include it or remove the dependency array react-hooks/exhaustive-deps
Run Code Online (Sandbox Code Playgroud)
我用useCallback来避免这个警告:
const getScore = useCallback(() => {
scoreRequest(answers);
}, [answers]);
useEffect(() => {
scoreRequest(answers);
}, [answers]);
Run Code Online (Sandbox Code Playgroud)
但仍然得到同样的错误。但是,我发现了一个类似的问题,答案中提到了将函数声明为 useEffect 或者我可以禁用该规则。scoreRequest()在另一个文件中声明的函数,我不想将它与我的组件混合使用。
export const scoreRequest = (answers: IAnswer[]): ThunkAction<void, AppState, null, Action<string>> => {
return async (dispatch: Dispatch) => {
dispatch(startScoreRequest());
getScoreApi(answers).then((response: AxiosResponse) => {
const { data } = response;
const answer = {
scoreLabel: data.message,
userScore: data.result.userScore,
totalScore: data.result.totalScore,
emoji: data.result.emoji,
scoreLabelColor: data.result.scoreLabelColor
};
dispatch(successScore(answer));
}, (error: AxiosError) => {
let errorMessage = "Internal Server Error";
if (error.response) {
errorMessage = error.response.data.error;
}
dispatch(failScore(errorMessage));
dispatch(errorAlert(errorMessage));
});
};
};
Run Code Online (Sandbox Code Playgroud)
是否有解决此警告的解决方案?