私のコードをお見せしたほうがいいです。圧縮されているので、それほど時間はかかりません。
const PropertiesList: FC = (estatesObject) => {
const [estates, setEstates] = useState(Object.values(estatesObject))
const filterEstatesUp = () => {
// just sorting an array of objects
const filteredEstates = estates.sort((a, b) => parseFloat(a.price) - parseFloat(b.price))
setEstates(filteredEstates)
}
const filterEstatesDown = () => {
// just sorting an array of objects
const filteredEstates = estates.sort((a, b) => parseFloat(b.price) - parseFloat(a.price))
setEstates(filteredEstates)
}
return (
<>
<div onClick={() => filterEstatesUp()}>up</div>
<div onClick={() => filterEstatesDown()}>down</div>
{estates.map((estate, index) => {
return(
<PropertyCard key={index} {...estate}/>
)
})}
</>
)
}
したがって、問題は、これらのdivnをクリックしたときです-何も変更されませupんdown
更新x:( それが何かに役立つ場合はnext.jsを使用しています)私はあなたの推奨事項でコードを変更しましたが、私は何か他のものを手に入れました:現在状態は変化していますが、ブラウザーはまだどういうわけか私に別の不動産の順序を表示しないので、私は古い順序で残っている不動産のカードを参照してくださいこれは私の変更されたコードです:
const PropertiesList: FC = (estatesObject) => {
const [estates, setEstates] = useState(Object.values(estatesObject))
const sortEstatesFromDown = () => {
const sortedEstates = [...estates]
sortedEstates.sort((a, b) => parseFloat(a.price) - parseFloat(b.price))
console.log("FROM DOWN TO UP", sortedEstates)
setEstates(sortedEstates)
}
const sortEstatesFromUp = () => {
const sortedEstates = [...estates]
sortedEstates.sort((a, b) => parseFloat(b.price) - parseFloat(a.price))
console.log("FROM UP TO DOWN", sortedEstates)
setEstates(sortedEstates)
}
return (
<>
<div onClick={() => sortEstatesFromDown()}>up</div>
<div onClick={() => sortEstatesFromUp()}>down</div>
{estates.map((estate) => {
return(
<PropertyCard key={estate.id} {...estate}/>
)
})}
</>
)
}
最大価格は3.000.000、最小価格は180.000ですが、両方を順番にクリックするとわかるように、何も変更されていません。サーバーからの通常の注文があります。
この状態は正常に変更されています(コンソールから確認できます)が、ブラウザーはカードの順序を変更しません。なぜですか?