ฉันจะบอกว่าไม่มีความคิดเริ่มต้นของคุณจับภาพรวมทั้งหมด แนวคิด 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
องค์ประกอบข้อผิดพลาดที่ไม่ได้มีเพียงแค่แสดงข้อผิดพลาดก็ยังสามารถทำผลข้างเคียงด้วย
วิธีการตั้งค่า / unset ข้อผิดพลาดขึ้นอยู่กับแอปพลิเคชันของคุณ ลองใช้ตัวอย่างหมายเลขโทรศัพท์ของคุณ
1. ถ้าการตรวจสอบความถูกต้องเป็นฟังก์ชั่นที่บริสุทธิ์สามารถทำได้ในตัวลด
จากนั้นคุณจะตั้งค่าหรือยกเลิกการตั้งค่าฟิลด์ข้อผิดพลาดเพื่อตอบสนองต่อการดำเนินการเปลี่ยนแปลงหมายเลขโทรศัพท์ ในตัวลดที่สร้างขึ้นด้วยคำสั่งเปลี่ยนมันอาจมีลักษณะเช่นนี้
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],
);
ตัวลดจะเกิดขึ้นพร้อมกับข้อความที่เหมาะสมสำหรับข้อผิดพลาดและตั้งค่า
อย่าลืมล้างข้อผิดพลาด คุณสามารถยกเลิกข้อผิดพลาดในการดำเนินการเปลี่ยนแปลงหรือเมื่อทำการร้องขออื่นขึ้นอยู่กับแอปพลิเคชัน
วิธีการทั้งสองที่ฉันระบุไว้ไม่เป็นเอกสิทธิ์เฉพาะบุคคล คุณสามารถใช้ข้อแรกเพื่อแสดงข้อผิดพลาดที่ตรวจพบภายในเครื่องและใช้ข้อที่สองเพื่อแสดงข้อผิดพลาดด้านเซิร์ฟเวอร์หรือเครือข่าย