方法:1、利用“const [arr, setArr]=useState([改變值])”修改State值;2、創建一個新的數組,并將原數組的值賦值給新數組,并用“setState(新數組)”修改State,將棧中原數組所指向的地址改變即可。
本教程操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
react中usestate改變值不渲染怎么辦
React中默認淺監聽,當State值為對象時,棧中存的是對象的引用(地址),setState改變的是堆中的數據
所以此時 setArr(arr) 后,棧中的地址還是原地址,React淺監聽到地址沒變,故會認為State并未改變,故沒有重渲染頁面
解決
思路:將棧中原arr所指向的地址改變即可
示例如下:
1)直接setState(要修改的值)
const [arr, setArr] = useState([]) setArr(1)
2)新創建一個數組newArr,將原數組的值賦值給新數組,并setState(newArr)
const [arr, setArr] = useState([]) const newArr = arr.slice(1) setArr(newArr)
利用ES6的拓展符
const [arr, setArr] = useState([]) setArr([...arr])
推薦學習:《react視頻教程》