react hooks中useState更新值后經常會出現值更新不及時的bug,可以使用以下思路解決
import React, { Component, useState } from 'react' import ReactDom, { render } from 'react-dom' const Hooks = () => { const [num, set_num] = useState(0) const [age, set_age] = useState(0) const add_age = () => { set_age((data) => { let new_data = data + 1 set_num_handle(new_data) return new_data }) //使用函數,而不是固定值,將最新值傳給要處理的函數,並返回給這個設置值的函數 } const set_num_handle = (new_data) => { set_num(new_data) } return (<div> <div> 年齡:{age} </div> <div><button onClick={add_age}>設置{num}</button></div> </div>) } ReactDom.render(<Hooks />, document.querySelector('#root'))
總結:上面的思路就是const [state,setState]=useState(0),使用setState()這個函數賦值的時候,不是傳入一個固定的值,而是使用setState((data)=>{let new_data=data+1;return new_data})得到最新的值,函數中的data是當前等待處理的值