Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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_Sorting - Fatal编程技术网

Javascript 按字母顺序排序

Javascript 按字母顺序排序,javascript,reactjs,sorting,Javascript,Reactjs,Sorting,我正在尝试按字母顺序排列我的应用程序中的用户列表,在ReactJS中添加一个按钮 我唯一能让它工作的方法就是传递道具,但我知道这不能做,因为道具不应该变异。需要一些帮助来理解我做错了什么。这是我的用户组件: import React from "react"; import { Route, Link } from "react-router-dom"; import User from "./User"; class Users extends React.Component { sta

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

我唯一能让它工作的方法就是传递道具,但我知道这不能做,因为道具不应该变异。需要一些帮助来理解我做错了什么。这是我的用户组件:

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;
从“React”导入React;
从“react router dom”导入{Route,Link};
从“/User”导入用户;
类用户扩展React.Component{
状态={
排序:“asc”
};
切换排序=()=>{
const{users}=this.state;
this.props.users.sort((a,b)=>a.name.localeCompare(b.name));
this.setState({users});
};
render(){
const{users}=this.state;
返回(
{this.props.users.map(user=>(
  • {user.name}
  • ))} this.toggleSort(users)}>Sort ); } } 导出默认用户;
    这是唯一能让我的排序按钮工作的方法,但是传递道具。。。有什么帮助吗?我还没有反应过来


    谢谢

    如果不想改变道具,请创建一个新变量:

    toggleSort=()=>{
    const newUsers={…this.props.users};
    排序((a,b)=>a.name.localeCompare(b.name));
    this.setState({users:newUsers});
    };
    
    在渲染函数中:

    {this.state.users.map(user=>(
    
  • {user.name}
  • ))}
    如果不想改变道具,请创建一个新变量:

    toggleSort=()=>{
    const newUsers={…this.props.users};
    排序((a,b)=>a.name.localeCompare(b.name));
    this.setState({users:newUsers});
    };
    
    在渲染函数中:

    {this.state.users.map(user=>(
    
  • {user.name}
  • ))}
    从“React”导入React;
    从“react router dom”导入{Route,Link};
    从“/User”导入用户;
    类用户扩展React.Component{
    //安装组件时设置用户。
    组件安装(){
    这是我的国家({
    用户:this.props.users
    });
    }
    状态={
    用户:[],
    排序:“asc”
    };
    切换排序=()=>{
    const{users}=this.state;
    让newUsers=users.sort((a,b)=>a.name.localeCompare(b.name));
    this.setState({users:newUsers});
    };
    render(){
    const{users}=this.state;
    返回(
    {users.map(user=>(
    
  • {user.name}
  • ))} this.toggleSort(users)}>Sort ); } } 导出默认用户
    从“React”导入React;
    从“react router dom”导入{Route,Link};
    从“/User”导入用户;
    类用户扩展React.Component{
    //安装组件时设置用户。
    组件安装(){
    这是我的国家({
    用户:this.props.users
    });
    }
    状态={
    用户:[],
    排序:“asc”
    };
    切换排序=()=>{
    const{users}=this.state;
    让newUsers=users.sort((a,b)=>a.name.localeCompare(b.name));
    this.setState({users:newUsers});
    };
    render(){
    const{users}=this.state;
    返回(
    {users.map(user=>(
    
  • {user.name}
  • ))} this.toggleSort(users)}>Sort ); } } 导出默认用户