Tóm tắt nếu bạn lười đọc:
booleankhông tốt đại diện chostate,booleantốt là kết quả tính từstate
Một ví dụ dễ thấy nhất với boolean không tốt là cách thiết kế state như vầy
let isLoading = true;
let isComplete = false;
let hasError = false;Thoạt nhìn chúng ta sẽ nghĩ nó tốt. Chúng ta đưa ra 3 state khác nhau ứng với 3 giá trị boolean riêng biệt, chỉ duy nhất một giá trị là true
const makeFetch = async () => {
isLoading = true;
try {
await fetch('/users');
isComplete = true;
} catch (e) {
hasErrored = true;
}
isLoading = false;
};Nhưng khi nghĩ kỹ lại, chúng ta sẽ nhận được 2 giá trị true nếu makeFetch được gọi lại lần nữa
isLoading = true;
isComplete = true;
hasError = false;Vậy làm sao để thiết kế một boolean tốt cho trường hợp trên?
State ở đây chúng ta sẽ có tất cả các giá trị sau
const statusEnum = {
idle: 'idle',
loading: 'loading',
complete: 'complete',
error: 'error'
}Và chúng ta dùng nó trong hàm makeFetch
const makeFetch = async () => {
status = statusEnum.loading;
try {
await fetch('/users');
status = statusEnum.complete;
} catch (e) {
status = statusEnum.error;
}
};Cần giá trị boolean bạn tính từ giá trị state
const isLoading = (status) => status === statusEnum.loading;



Initializing...