我有以下組件,其中包含一個更改我的sorting狀態的選擇
const [sorting, setSorting] = useState("");
const priceAsc = (r1, r2) => {
return r2.euroPrice - r1.euroPrice;
};
const priceDesc = (r1, r2) => {
return r1.euroPrice - r2.euroPrice;
};
useEffect(() => {
console.log(sorting);
switch (sorting) {
case "price:asc":
console.log("here!");
setRoutes(routes.sort(priceAsc));
break;
case "price:desc":
console.log("now here!");
setRoutes(routes.sort(priceDesc));
break;
default:
setRoutes(routes.sort(priceAsc));
break;
}
}, [sorting]);
問題是如果我第一次選擇價格上漲選項,我的程式輸出
price:asc
here!
這應該意味著它按價格升序對我的陣列進行排序,但實際上是按降序對其進行排序。如果我更改選擇,那么它會像我期望的那樣對其進行排序。所以這只發生在我第一次選擇這個ascending選項時
uj5u.com熱心網友回復:
Array.sort對陣列進行原地排序。因為狀態必須被視為不可變的,所以您必須使用新陣列更新狀態。
setRoutes([...routes.sort(priceAsc)])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/333478.html
標籤:反应
上一篇:React無法觸發onClick
