4 回答

TA貢獻1719條經驗 獲得超6個贊
此問題是因為數組引用未更改。
onClick={() => {
const list = [...exerciseList]
list.push(list.shift());
setExerciseList(list);
}}

TA貢獻1815條經驗 獲得超10個贊
這是因為您正在exerciseList直接修改數組,但您不應該這樣做,因為狀態更新將看到列表是相同的并且不會觸發重新渲染。相反,制作數組的副本,然后使用setExerciseList:
const newList = [...exerciseList]
newList.push(newList.shift())
setExerciseList(newList)

TA貢獻1859條經驗 獲得超6個贊
這是因為 state 中的數組引用沒有改變。像這樣更新 setState 調用,
<button
onClick={() => {
exerciseList.push(exerciseList.shift());
setExerciseList([...exerciseList]);
console.log(exerciseList);
}}
>
Done
</button>

TA貢獻1848條經驗 獲得超6個贊
您必須更改數組引用以反映狀態中的情況。
setExerciseList([...exerciseList]);
工作代碼 - https://codesandbox.io/s/react-playground-forked-ohl1u
添加回答
舉報