นี่คือปัญหา: ฉันพยายามโทร 2 ฟังก์ชั่นเมื่อคลิกปุ่ม ฟังก์ชั่นทั้งสองอัพเดทสถานะ (ฉันใช้ useState hook) ฟังก์ชันแรกอัปเดตค่า 1 อย่างถูกต้องเป็น 'ใหม่ 1' แต่หลังจาก 1 วินาที (setTimeout) ฟังก์ชั่นที่สองเริ่มทำงานและจะเปลี่ยนค่า 2 เป็น 'ใหม่ 2' แต่! ได้ตั้งค่า value1 กลับไปที่ '1' ทำไมสิ่งนี้จึงเกิดขึ้น ขอบคุณล่วงหน้า!
import React, { useState } from "react";
const Test = () => {
const [state, setState] = useState({
value1: "1",
value2: "2"
});
const changeValue1 = () => {
setState({ ...state, value1: "new 1" });
};
const changeValue2 = () => {
setState({ ...state, value2: "new 2" });
};
return (
<>
<button
onClick={() => {
changeValue1();
setTimeout(changeValue2, 1000);
}}
>
CHANGE BOTH
</button>
<h1>{state.value1}</h1>
<h1>{state.value2}</h1>
</>
);
};
export default Test;
useState
useReducer
const [state, ...]
และจากนั้นอ้างอิงถึงในตัวตั้งค่า ... มันจะใช้สถานะเดียวกันตลอดเวลา
useState
โทร2 สายแยกกันหนึ่งสายสำหรับ "ตัวแปร"
changeValue2
?