Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回排序后的数组_Javascript_Reactjs - Fatal编程技术网

Javascript 返回排序后的数组

Javascript 返回排序后的数组,javascript,reactjs,Javascript,Reactjs,如何从方法返回已排序的数组。 这是我需要将排序数组显示为列表的代码。当我从sortList返回数字时,它不起作用。为什么?返回编号不返回JSX中的数组。不是使用return语句的正确位置 function RenderList(props){ let numbers=props.number; function sortList(){ numbers.sort(); return numbers } const numList=numbers.map((num)=>

如何从方法返回已排序的数组。 这是我需要将排序数组显示为列表的代码。当我从sortList返回数字时,它不起作用。为什么?返回编号不返回JSX中的数组。不是使用return语句的正确位置

function RenderList(props){
 let numbers=props.number;
 function sortList(){
    numbers.sort();
    return numbers
 }
 const numList=numbers.map((num)=>(
    <li>{num}</li>
 ))
 return(
   <div>
    <h2>Rendering List</h2>
    <button onClick={sortList}>SortList</button>
    <ul>{numList}</ul>
   </div>
 )
}

您需要在状态中存储数字数组,然后更新状态以重新渲染

function RenderList(props){
 const [numbers, setNumbers] = useState(props.numbers);
 function sortList(){
    setNumbers(numbers.slice().sort());
 }
 const numList=numbers.map((num)=>(
    <li>{num}</li>
 ))
 return(
   <div>
    <h2>Rendering List</h2>
    <button onClick={sortList}>SortList</button>
    <ul>{numList}</ul>
   </div>
 )
}

如果你真的不想使用useState,那么你可以这样做

const [sort, setSort] = useState(false);

<button onClick={triggerSort}>SortList</button>

const triggerSort = () => {
    if (!sort) {//if you remove this check and keep only setSort(!sort) then you can get sorted and non-sorted list when clicking
        setSort(!sort)
    }        
}

const numList= (sort ? [...numbers].sort() : numbers).map((num)=>(
    <li>{num}</li>
))

您需要创建一个设置状态才能重新呈现组件。无法使用功能组件对列表进行排序。我不想使用状态here@kalhan您能否提供一个示例您可以使用useState钩子向功能组件引入状态:是否可以在不使用状态的情况下对数组进行排序,但它是ReactJS中的反模式
const numbersList = useMemo(() => {
    return sort ? [...numbers].sort() : numbers
}, [sort]);
.....
<ul>
   {
      numbersList.map(num => <li>{num}</li>)
   }
</ul>