【问题标题】:Ternary operator multiple actions in reactjsreactjs中的三元运算符多个动作
【发布时间】:2021-10-31 15:46:48
【问题描述】:

我正在使用 Antd 表并通过在年龄列上应用范围过滤器来过滤学生的数据。我的表中也有标记和出勤列。过滤后,我的结果也是从分数和出勤列中获取数据,我想禁用这些数据。

我正在使用三元运算符,我在下面分享了我尝试过的内容:

// SHOWING RESULT(S) FOR IN-BETWEEN RANGE FOR AGE ONLY WHEN SEARCHED

const handleSearch = (firstInput, secondInput) => {
  setSearchStu(
    student.filter((obj) => {
      return obj.age >= firstInput && obj.age <= secondInput
        ? (true, xxxxxxxxxxxx)
        : obj.marks >= firstInput && obj.marks <= secondInput
        ? (true)
        : obj.attendance >= firstInput && obj.attendance <= secondInput
        ? (true)
        : false;
    })
  );
};

xxxxxxxxxxxx 表示此时我想禁用标记和出勤列在仅搜索年龄列时过滤自己,反之亦然。

我尝试写类似 (true, (obj.attendance: false)) : 等等.. 但它会抛出 : 和 ) 的语法错误。

我应该在xxxxxxxxxxxx 输入什么以获得我想要的结果?或任何其他方式来实现这一点。

【问题讨论】:

  • 你不能使用(true, xxxx)(true)(...)在JS中不是数据结构-它是无效的语法,(...)用于在@中创建tuple 987654329@
  • 如果我没记错的话,当我们想要在条件满足时执行多个操作时,我们可以在 reactjs 中执行 (true, xxxx) 之类的操作。

标签: reactjs if-statement return conditional-operator


【解决方案1】:

我认为您只想过滤 age 而不是 marksattendance。在这种情况下,您只需要获取新的过滤数组并使用setSearchStu 函数设置状态。代码如下:

const handleSearch = (firstInput, secondInput) => {
  const newFilteredStudents = student.filter((obj) => obj.age >= firstInput && obj.age <= secondInput);
  setSearchStu(newFilteredStudents);
};

【讨论】:

  • RishabhGupta,感谢您的回复。但仅供参考,我必须一次使用所有 3 列(年龄、标记和出勤率),但一次只能执行一次搜索。对此有何帮助?
  • 您如何确定应根据哪个参数(年龄、分数或出勤率)进行搜索?
  • RishabhGupta,我在每一列(年龄、分数或出勤率)上设置了搜索过滤器,它基本上需要 2 个输入,即过滤给定这 2 个输入范围之间的数据。
  • 如果你想对所有列应用过滤器,那么你只需要通过使用and条件&amp;&amp;添加更多条件来扩展过滤器
猜你喜欢
  • 2020-10-07
  • 2011-12-07
  • 1970-01-01
  • 2017-03-09
  • 2012-04-02
  • 2011-06-26
  • 2019-12-15
  • 1970-01-01
  • 2013-10-01
相关资源
最近更新 更多