Reactjs 无法对React中的列进行排序
我正在尝试按字母顺序对表中的“设备”列进行排序。我是react新手,在react中发现了这种排序方法。错在哪里Reactjs 无法对React中的列进行排序,reactjs,react-native,react-redux,rxjs,azure-active-directory,Reactjs,React Native,React Redux,Rxjs,Azure Active Directory,我正在尝试按字母顺序对表中的“设备”列进行排序。我是react新手,在react中发现了这种排序方法。错在哪里 function createData(videos, status, model, manage, device, favourite) { return { videos, status, model, manage, device, favourite }; } const rows = [ createData("https://www.youtube.com/wat
function createData(videos, status, model, manage, device, favourite) {
return { videos, status, model, manage, device, favourite };
}
const rows = [
createData("https://www.youtube.com/watch?v=ug50zmP9I7s", 'Online', 2, 24, 'Cam1', true),
createData("https://www.youtube.com/watch?v=Bey4XXJAqS8", 'Offline', 2, 37, 'Am2', true),
createData("https://www.youtube.com/watch?v=Bey4XXJAqS8", 'Online', 2, 24, 'Zam3', false),
createData("https://www.youtube.com/watch?v=ug50zmP9I7s", 'Offline', 2, 67, 'Dam4', false),
createData("https://www.youtube.com/watch?v=Bey4XXJAqS8", 'Online', 2, 49, 'Lam5', false),
];
这是我用于排序的排序逻辑
export default function StreamPage(props) {
const [sortType, setSortType] = React.useState('device');
const [Results, setResults] = React.useState(rows);
const [sortDirection, setSortDirection] = React.useState("DESC");
useEffect(() => {
const sortArray = () => {
const types = {
device: 'device',
};
let type ='device';
const sortProperty = types[type];
const sorted = [...rows].sort((a, b) => b[sortProperty] - a[sortProperty]);
console.log(sorted); // sorted is not giving the sorted column here
setResults(sorted);
};
这是我的返回函数
return(
<div onClick={setSortType} className="div">
<div class="info">
{sortDirection === "ASC" ? (
<KeyboardArrowUpIcon fontSize='small' />
) : (
<KeyboardArrowDownIcon fontSize='small' />
)
}
</div>
);}
返回(
{sortDirection===“ASC”(
) : (
)
}
);}
您应该使用StringlocaleCompare()
方法,因为您正在比较字符串属性
const sorted = [...rows].sort((a, b) => a[sortProperty].localeCompare(b[sortProperty]));
您需要将更改依赖项传递给useEffect挂钩
useEffect(() => {
....
....
}, [sortProperty]);
const sorted=[…行].sort((a,b)=>b()[sortProperty]-a()[sortProperty]);这行吗?我认为您需要执行每一行,否则它将尝试对函数进行排序?非常感谢James的响应,但由于列具有字符串,因此localeCompare修复了我的问题。非常感谢Ray。您进行字符串比较是正确的,localeCompare是正确的方法。干杯,没问题!很高兴我能帮忙。非常感谢您的回复。用于列排序的localeCompare修复了我的问题。