【发布时间】:2021-11-03 23:57:42
【问题描述】:
我有 products 之类的对象数组
[{name: 'apple', value: 100}, {name: 'watermelon', value: 200}, {name: 'orange', value: 50}],以及带有“高价”和“低价”选项的选择输入,但它不起作用:
function ProductsPage() {
const [products, setProducts] = useState([])
useEffect(() => {/*here i setProducts([...]) array of objects which i get of backend*/})
const orderShowing = (e) => {
let actual_show = products
let newOrder = e.target.value;
if (newOrder === "High price") {
actual_show.sort((a, b) => (b.value > a.value) ? 1 : (a.value > b.value) ? -1 : 0)
} else if (newOrder === "Low price") {
actual_show.sort((a, b) => (a.value > b.value) ? 1 : (b.value > a.value) ? -1 : 0)
console.log(actual_show)
setProducts(actual_show)
}
return (
<div>
<select id="productsOrder" onChange={orderShowing}>
<option>High price</option>
<option>Low price</option>
</select>
<h2>Products</h2>
{products.map((p) => {
return <p>{p.name}</p>})}
</div>
)
}
console.log 实际上是我想要的(排序有效),但页面不会使用“新”products 数组刷新
【问题讨论】:
标签: javascript reactjs sorting react-hooks use-state