简体   繁体   English

使用 onClick 按其值对数组中的对象进行排序

[英]Sorting objects in an array by its values using onClick

I want to create one function that can be used for 2 onClick s to sort objects by title and by genre.name in this array:我想创建一个 function可用于 2 个onClick以在此数组中按titlegenre.name名称对对象进行排序:

const movies = [
  {
    title: "Terminator",
    genre: { _id: "5b21ca3eeb7f6fbccd471818", name: "Action" },
  },
  {
    title: "Rat Race",
    genre: { _id: "5b21ca3eeb7f6fbccd471818", name: "Comedy" },
  },
  {
    title: "Get Out",
    genre: { _id: "5b21ca3eeb7f6fbccd471820", name: "Thriller" },
  },
]

So far, for each onClick I had to create one function: onClick={titleSorted} and onClick={genreSorted} .到目前为止,我必须为每个onClick创建一个 function: onClick={titleSorted}onClick={genreSorted} Yet I think this is not a good practice because if I have 10 keys in one object, it'll be too many similar codes in one file.但是我认为这不是一个好习惯,因为如果我在一个 object 中有 10 个键,那么一个文件中的类似代码就会太多。

However, if I create one function with a parameter for all onClick s:但是,如果我使用所有onClick参数创建一个 function :

moviesSorted(item) => {}

then I can't use onClick={moviesSorted(title)} or onClick={moviesSorted(genre.name)} because it automatically runs the functions before clicking as I understand.那么我不能使用onClick={moviesSorted(title)}onClick={moviesSorted(genre.name)}因为据我所知,它会在单击之前自动运行这些功能。

So please help me find a way for this.所以请帮我找到解决办法。 I really appreciate it!对此,我真的非常感激!

Function passed to onClick must be a event handler , implemented as Function 传递给onClick必须是事件处理程序,实现为

function(event) {
  // ...
}

So you in your example, you might want所以你在你的例子中,你可能想要

onClick={() => moviesSorted(title)}

// or 

onClick={() => moviesSorted(genre.name)}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM