나는 당신의 초기 아이디어 중 어느 것도 전체 그림을 포착하지 못한다고 말할 것입니다. 아이디어 1은 단지 콜백입니다. 콜백을 사용하려는 경우 : useCallback
. 아이디어 2가 작동하며 redux를 사용할 필요가없는 경우 바람직합니다. 때로는 redux를 사용하는 것이 좋습니다. 입력 필드에 오류나 유사한 것이 없는지 확인하여 양식 유효성을 설정하고있을 수 있습니다. 우리는 redux 주제에 관한 것이기 때문에 그것이 사실이라고 가정합시다.
일반적으로 redux를 사용하여 오류를 처리하는 가장 좋은 방법은 오류 필드를 상태에두고 오류 구성 요소로 전달하는 것입니다.
const ExampleErrorComponent= () => {
const error = useSelector(selectError);
if (!error) return null;
return <div className="error-message">{error}</div>;
}
오류 구성 요소는 오류를 표시하지 않아도되며 부작용도 발생할 수 있습니다 useEffect
.
오류 설정 / 설정 해제 방법은 응용 프로그램에 따라 다릅니다. 전화 번호 예를 사용하겠습니다.
1. 유효성 검사가 순수한 기능인 경우 감속기에서 수행 할 수 있습니다.
그런 다음 전화 번호 변경 작업에 대한 응답으로 오류 필드를 설정하거나 설정 해제합니다. switch 문으로 작성된 감속기에서는 다음과 같이 보일 수 있습니다.
case 'PHONE_NUMBER_CHANGE':
return {
...state,
phoneNumber: action.phoneNumber,
error: isValidPhoneNumber(action.phoneNumber) ? undefined : 'Invalid phone number',
};
2. 백엔드에서 오류가보고되면 오류 조치를 전달하십시오.
전화 번호를 전화 번호로 전송하기 전에 유효성 검사를 수행하는 백엔드로 전화 번호를 보내고 있다고 가정 해 봅시다. 클라이언트 측에서 데이터가 유효한지 알 수 없습니다. 서버의 단어를 가져 가면됩니다.
const handleSubmit = useCallback(
() => sendPhoneNumber(phoneNumber)
.then(response => dispatch({
type: 'PHONE_NUMBER_SUBMISSION_SUCCESS',
response,
}))
.catch(error => dispatch({
type: 'PHONE_NUMBER_SUBMISSION_FAILURE',
error,
})),
[dispatch, phoneNumber],
);
감속기는 오류에 대한 적절한 메시지를 표시하고 설정해야합니다.
오류를 설정 해제하는 것을 잊지 마십시오. 변경 조치 또는 애플리케이션에 따라 다른 요청을 할 때 오류를 설정 해제 할 수 있습니다.
내가 설명한 두 가지 접근법은 상호 배타적이지 않습니다. 첫 번째를 사용하여 로컬로 감지 가능한 오류를 표시하고 두 번째를 사용하여 서버 측 또는 네트워크 오류를 표시 할 수 있습니다.