這就是我想做的:get test info from api > receieve test info > store it on an object "test" > set states "test_title" and "test_desc"> put both "test_name" and "test_desc" as values on my form從 api 獲取測試信息:useEffect(() => { fetchTest()}, [])const [test, setTest] = useState({})const [test_name, setTestName] = useState("")const [test_desc, setTestDesc] = useState("")// Fetch Testconst fetchTest = () => { let test_code = params.code const url = ...url here... axios.get(url) .then(res => { if (res.status == 200) { setIsGettingData(false) setTest(res.data) // Set Test Name and Desc setTestInfo() } }) .catch(err => { console.log(err.response) })}這用于更新從 api 調用接收數據后調用的test_nameand :test_desc// Set Test Infoconst setTestInfo = () => { setTestName(test.name) setTestDesc(test.desc)}我的表格:<form id="form_test"> <input type="text" value={test_name} onChange={e => setTestName(e.target.value)} className="form-control mb-2" placeholder="test name" /> <textarea className="form-control" value={test_desc} onChange={e => setTestDesc(e.target.value)} placeholder="test description"></textarea></form>問題是有時輸入顯示實際的test_name和test_desc,有時則不顯示。當我控制臺記錄它時,它有時會顯示實際值,有時會顯示未定義。當在頁面上正常顯示它時{test_name},就像 一樣,有時顯示,有時不顯示。我想這可能是因為api調用?就像有延遲或其他什么情況一樣,我猜 DOM 在保存或接收數據之前就已經渲染了所有內容?我不知道。對此有何建議?多謝!
通過 API 調用設置的狀態值有時不會顯示在頁面上(或表單組件上)
楊__羊羊
2023-08-18 10:33:35