Reactjs 无法对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

我正在尝试按字母顺序对表中的“设备”列进行排序。我是react新手,在react中发现了这种排序方法。错在哪里

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”(
) : (
)
}
);}

您应该使用String
localeCompare()
方法,因为您正在比较字符串属性

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修复了我的问题。