【发布时间】:2021-04-21 19:59:14
【问题描述】:
我正在使用 React Hooks。我正在尝试对从 API 获取的数据进行排序,并使用新排序的数据更新状态。
const [runs, setRuns] = useState({
runs: [],
});
const [altConcentrationRuns, setAltConcentrationRuns ] = useState({
altConcentrationRuns : []
})
async function handleRuns() {
getRuns().then((result) => {
setRuns(result.rows);
setFilteredRuns(result.rows);
//function to sort data according to column header/property
const sortRowsByProperty = (property, direction) => {
return result.rows.sort(function(a,b) {
var A = Object.keys(a)[0];
var B = Object.keys(b)[0];
if(direction == "ascending") {
return (a[A][property] - b[B][property]);
} else if(direction == "descending") {
return b[B][property] - a[A][property];
}
});
}
setAltConcentrationRuns(sortRowsByProperty('altConcentration', 'ascending'));
//not updating, only showing runs
setIsLoading(false);
});
}
useEffect(() => {
setIsLoading(true);
handleRuns();
}, []);
console.log('runs', altConcentrationRuns);
当我控制台记录我的输出时,我没有得到排序的数据,只有原始数据 (result.rows)。我做错了什么?
谢谢!
【问题讨论】:
-
您可以在控制台中添加您获得的日志吗?
-
未按 altConcentration 排序的对象数组,而是提取数据(运行)的原始数组
-
请截图:)
-
altConcentration确实是一个字符串,你不能子结构字符串,所以你应该遵循@xdumaine 的建议。另外,sort 会改变原始数组,所以当它被排序时,它会在任何地方排序
标签: javascript reactjs react-hooks state