<div id="root">
</div>
const App = () => {
  const [ users, setUsers ] = React.useState([]);;
  const [ state, setState ] = React.useState(false);

  const getUsers = async() => {
    const { data } = await axios.get('https://randomuser.me/api/?results=10');
    setUsers(data.results);
  }

  React.useEffect(() => {
    getUsers();
  }, []);

  const filterUsers = React.useMemo(() => {
    return users.sort((a, b) =>  {
      if(state) {
        return a.dob.age < b.dob.age ? 1 : -1
      }
      return a.dob.age > b.dob.age ? 1 : -1
    });
  }, [ state ])

  return (
    <div>
      <button onClick={ () => setState(true) } className="border-4 border-indigo-500">年齡大到小</button>
      <button onClick={ () => setState(false) }className="border-4 border-indigo-500 ml-4">年齡小到大</button>
      <hr className="my-4"/>
      <ul>
        {
          filterUsers.map((user, index) => (
            <li key={ user.email }>
              { `Name:${user.name.title}.${user.name.first } ${user.name.last}, Age:${user.dob.age}` }
            </li>
          ))
        }
      </ul>
    </div>
  )
}

const root = ReactDOM.createRoot(document.querySelector('#root'));
root.render(<App />);
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdn.tailwindcss.com
  2. https://unpkg.com/react@18/umd/react.development.js
  3. https://unpkg.com/react-dom@18/umd/react-dom.development.js
  4. https://cdnjs.cloudflare.com/ajax/libs/axios/0.27.2/axios.min.js