π Useful lessons I've learned about Handling react stateλ₯Ό λ³΄κ³ μ 리ν κΈμ
λλ€.
1. μν(state)λ₯Ό λ€λ£¨λ λ°©λ²κ³Ό κ°κ° νμν μν©μ μκ³ μλ€.
2. ν΄λμ€ μ»΄ν¬λνΈλ λμ΄μ μ¬μ©νμ§ μλλ€.
βοΈ ν¨μν μ»΄ν¬λνΈμ μ₯μ
3. κΈ°μ‘΄ μν/μμ±(props)λ‘λΆν° νμλ μν(derived state)λ₯Ό μ¬μ©νλ€.
export default function Checkout() {
const { dispatch } = useCart();
const [address, setAddress] = useState(emptyAddress);
const [satus, setStatus] = useState(STATUS.IDLE);
const [saveError, setSaveError] = useState(null);
const [touched, setTouched] = useState({});
// derived state
const errors = getErrors(address);
const isValid = Object.keys(errors).length === 0;
//...
}
4. π₯ 리μ‘νΈ λ λλ§ μμ κ³Ό λ λλ§ λ°©μ§λ²μ μκ³ μλ€.
5. λλΆλΆμ μνλ 리λͺ¨νΈμ΄λ€.
6. λ‘컬 μνλΆν° μμν΄λΌ. κΈλ‘λ² μνλ μ΅νμ μλ¨μ΄λ€.
7. Lodash, Underscore, Ramdaλ₯Ό μ¬μ©νμ§ λ§κ³ , immutableJS
λ₯Ό λ°μλ€μ¬λΌ.
βοΈ μλ°μ€ν¬λ¦½νΈμμ λΆλ³ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°©μ
9. π₯ μ¬λ¬ μνλ μ΄κ±°ν(enum)μΌλ‘ μμ±νλ€.
// Using seperate state to track the form's status ππ»
const [submitting, setSubmitting] = useState(false);
const [submitted, setSubmitted] = useState(false);
const [completed, setCompleted] = useState(false);
// Using a single status enum instead π
const STATUS = {
IDLE: "IDLE",
SUBMITTING: "SUBMITTING",
SUBMITTED: "SUBMITTED",
COMPLETED: "COMPLETED",
};
const [status, setStatus] = useState(STATUS.IDLE);