gpt4 book ai didi

javascript - 为什么在 React Hooks 中排序后数据没有更新?

转载 作者:行者123 更新时间:2023-12-02 23:34:01 28 4
gpt4 key购买 nike

我是 React Hooks 新手。我正在尝试对 React Hook 内的表格进行排序,但单击后我的内容没有更新。这是为什么?

这是我的钩子(Hook):

const Main = ({ dataProps }) => {
const [data, setData] = useState(dataProps);
const sortById = (field) => {
let sortedData = data.sort((a, b) => {
if(a[field] < b[field]) { return -1; }
if(a[field] > b[field]) { return 1; }
return 0;
});
setData(sortedData);
};
return (
<table>
<thead>
<tr>
<th>iD <div className="arrows"><div onClick={() => sortById("id")} className="arrow-up"/></th>
<th>First name <div className="arrows"><div onClick={() => sortById("firstName")} className="arrow-up"/></div></th>
</tr>
</thead>
<tbody>
{data.map((user) => {
return <tr key={user.id}>
<td className="number">{user.id}</td>
<td className="firstname">{user.firstName}</td>
</tr>
})}
</tbody>
</table>
);
};

最佳答案

问题是排序返回相同的数组,这不会导致重新渲染。如果您在排序之前进行切片,则会解决问题。

const sortById = (field) => {
let sortedData = data.slice().sort((a, b) => {
if(a[field] < b[field]) { return -1; }
if(a[field] > b[field]) { return 1; }
return 0;
});
setData(sortedData);
};

顺便说一句,@jonas-wilms 提到了更有效的方法

关于javascript - 为什么在 React Hooks 中排序后数据没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56362563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com