【问题标题】:Sort mapped list with Lodash on ReactJS在 ReactJS 上使用 Lodash 对映射列表进行排序
【发布时间】:2016-02-06 04:02:01
【问题描述】:

我有一个数组:

people = [
  {
    name: "Kyle",
    _id: "2"
  },
  {
    name: Susan,
    _id: "1"
  }
]

我有一个这样的映射列表:

return (
  <ul>
    {people.map( (person) => {
      return (
        <li>
          <span>{person.name}</span>
          <span>{person.id}</span>
        </li>
       )
    })}
  </ul>
)

这一切都很好,但是我如何对它们进行排序,比如基于“名称”?我尝试使用[_.sortBy][1],但无法弄清楚它如何适合 React 和 map 函数的上下文。使用 lodash 或下划线的 _.sortBy 将不胜感激。

谢谢!

【问题讨论】:

    标签: javascript arrays sorting reactjs lodash


    【解决方案1】:

    你需要先导入

    import sortBy from "lodash/sortBy";
    

    然后你可以像这样使用它

    const arr = [{id: 2}, {id: 0}];
    sortBy(arr, "id");
    

    【讨论】:

      【解决方案2】:

      _.sortBy 中,您可以传递将用于对您的集合进行排序的字段名称,了解更多关于_.sortBy 的信息

      var Component = React.createClass({
          getInitialState() {
              return {
                  people: _.sortBy([
                      { name: "Kyle", _id: 2}, 
                      { name: "Susan", _id: 1}
                  ], '_id')
              }
          },
      
          sortBy(field) {
              this.setState({ 
                  people: _.sortBy(this.state.people, field) 
              });
          },
      
          render: function() {
              var peopleList = this.state.people.map( (person, index) => {
                  return (<li key={index}>
                      <span>{person.name}</span>
                      <span>{person.id}</span>
                  </li>);        
              })
      
              return <div>
                  <a onClick={this.sortBy.bind(this, '_id')}>Sort By Id</a> | 
                  <a onClick={this.sortBy.bind(this, 'name')}>Sort By Name</a>
                  <ul>{peopleList}</ul>
              </div>;
          }
      });
      

      Example

      【讨论】:

        【解决方案3】:

        你可以像这样使用 sortBy:

        _.sortBy(<array name here>, '<key here>')
        

        试试

        return (
            <ul>
                {_.sortBy(people, 'name').map( (person) => {
                    return (
                        <li>
                            <span>{person.name}</span>
                            <span>{person.id}</span>
                        </li>
                    )
                })}
            </ul>
        )
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-23
          • 2021-11-15
          • 2016-01-10
          • 2017-08-24
          • 1970-01-01
          • 2020-07-27
          • 1970-01-01
          相关资源
          最近更新 更多