javascript - 在reactJS中按字母顺序排序

标签 javascript reactjs sorting

我正在尝试按字母顺序对应用程序中的用户列表进行排序,并在 ReactJS 中添加一个按钮。

我可以让这个工作的唯一方法是传递 props,但我知道不能这样做,因为 props 不应该被改变。需要一些帮助来了解我做错了什么。这是我的用户组件:

import React from "react";
import { Route, Link } from "react-router-dom";
import User from "./User";

class Users extends React.Component {
  state = {
    sort: "asc"
  };

  toggleSort = () => {
    const { users } = this.state;
    this.props.users.sort((a, b) => a.name.localeCompare(b.name));
    this.setState({ users });
  };

  render() {
    const { users } = this.state;

    return (
      <div>
        {this.props.users.map(user => (
          <li key={user.id}>
            <Link to={`/users/${user.id}`}>{user.name}</Link>
          </li>
        ))}
        <button onClick={() => this.toggleSort(users)}>Sort</button>

        <Link to={`/users/new`} />
      </div>
    );
  }
}

export default Users;

这是我让排序按钮正常工作的唯一方法,但是传递 Prop ......有什么帮助吗?我对 React 还很陌生

谢谢!

最佳答案

如果您不想改变 Prop ,请创建一个新变量:

toggleSort = () => {
  const newUsers = { ...this.props.users };
  newUsers.sort((a, b) => a.name.localeCompare(b.name));
  this.setState({ users: newUsers });
};

在你的渲染函数中:

{this.state.users.map(user => (
  <li key={user.id}>
    <Link to={`/users/${user.id}`}>{user.name}</Link>
  </li>
))}

关于javascript - 在reactJS中按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59456181/

相关文章:

javascript - 使用 Angular JS 将 Total Integer 拆分为两个字段

javascript - 构建期间发生 react 、redux 和 typescript 错误

reactjs - Redux createStore<StoreState> 产生错误 : Expected 4 type arguments, 但得到 1

java - 以自定义顺序根据其属性对对象的数组列表进行排序

PHP:时间戳排序

javascript - 错误 : Cannot read property 'close' of null

javascript - 如何将 td 插入数组 es6 Reactjs

JavaScript 契约和断言

javascript - react : Prevent scroll when modal is open

javascript - 具有意外堆栈的递归插入排序