React JS 按升序和降序排序

2023-11-24

我一直在使用sortBy from lodash,但继续得到

./src/components/Product.js
Syntax error: Unexpected token (17:29)

  15 |       sortByPrice() {
  16 |         this.setState(prevState => ({
> 17 |           sortBy(prevState, ['price'])
     |                              ^
  18 |         }));
  19 |       }
  20 |

这是我的组件,我想在其中根据对象的价格对对象数组进行排序。this.state inside return()给了我一个数组,所以这似乎有效,我只需要获取sortByPrice()在职的

import React, { Component } from 'react'
import sortBy from 'lodash/sortBy'
import './Product.css'
import products from '../offers.json'


class Product extends Component {

  constructor(props) {
    super(props)
    this.state = { products }
    this.sortByPrice = this.sortByPrice.bind(this);
  }

  sortByPrice() {
    this.setState(prevState => ({
      sortBy(prevState, ['price'])
    }));
  }

  render() {
    return (
      <div className="Product">
      <a href="#" onClick={this.sortByPrice}>
      Click me
      </a>
      <br />
      { products.map((product, index) =>
        <div key ={index} className="card">
        <img src={ product.product.details.image } alt={ product.product.details.ean }/>
        <h3>Prijs: { product.price } Euro</h3>
        <p>Staat: { product.description }</p>
        <p>Verkoper: { product.user.details.firstname }</p>
        </div>
      )}
      </div>
    )
  }
}
export default Product

UPDATE

原来我是想打电话sortBy()on 和 object,这导致了错误。实现了这个并且错误消失了,现在我只需要找出一种方法来管理我的状态并重新渲染视图

this.setState(prevState => {
    { products: sortBy(prevState.products, ['price']) }
});

UPDATE 2

与一些朋友交谈后,他们建议我放弃lodash完全是为了这个。我只是自己编写了函数,将绑定添加到构造函数中,并在onClick我的 ASC 和 DESC 按钮。

import React, { Component } from 'react'
import './Product.css'
import products from '../offers.json'

class Product extends Component {

  constructor(props) {
    super(props)
    this.state = { products }
    this.sortByPriceAsc = this.sortByPriceAsc.bind(this);
    this.sortByPriceDesc = this.sortByPriceDesc.bind(this);
  }

  sortByPriceAsc() {
    this.setState(prevState => {
      this.state.products.sort((a, b) => (a.price - b.price))
  });
  }

  sortByPriceDesc() {
    this.setState(prevState => {
      this.state.products.sort((a, b) => (b.price - a.price))
  });
  }

  render() {
    return (
      <div>
      Sorteren:
        <button onClick={this.sortByPriceAsc}>
          ASC
        </button>
        <button onClick={this.sortByPriceDesc}>
          DESC
        </button>
      <div className="product">
      { this.state.products.map((product, index) =>
        <div key ={index} className="card">
          <img src={ product.product.details.image } alt={ product.product.details.ean }/>
          <h3>Prijs: { product.price } Euro</h3>
          <p>Staat: { product.description }</p>
          <p>Verkoper: { product.user.details.firstname }</p>
        </div>
      )}
      </div>
      </div>
    )
  }
}
export default Product

工作代码:

    import React, { Component } from 'react'
    import './Product.css'
    import products from '../offers.json'

    class Product extends Component {

      constructor(props) {
        super(props)
        this.state = { products }
        this.sortByPriceAsc = this.sortByPriceAsc.bind(this);
        this.sortByPriceDesc = this.sortByPriceDesc.bind(this);
      }

      sortByPriceAsc() {
        this.setState(prevState => {
          this.state.products.sort((a, b) => (a.price - b.price))
      });
      }

      sortByPriceDesc() {
        this.setState(prevState => {
          this.state.products.sort((a, b) => (b.price - a.price))
      });
      }

      render() {
        return (
          <div>
          Sorteren:
            <button onClick={this.sortByPriceAsc}>
            Aflopend
            </button>
            <button onClick={this.sortByPriceDesc}>
            Oplopend
            </button>
          <div className="Product">
          { this.state.products.map((product, index) =>
            <div key ={index} className="card">
              <img src={ product.product.details.image } alt={ product.product.details.ean }/>
              <h3>Prijs: { product.price } Euro</h3>
              <p>Staat: { product.description }</p>
              <p>Verkoper: { product.user.details.firstname }</p>
            </div>
          )}
          </div>
          </div>
        )
      }
    }
    export default Product
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React JS 按升序和降序排序 的相关文章

随机推荐

  • EasyMock:模拟对象正在调用实际方法

    我在单元测试中有以下代码片段 ClassToBeMocked mock createMock ClassToBeMocked class I ve statically imported EasyMock mock callMethod T
  • 如何创建警报来检测 DynamoDb 限制已达到特定百分比,然后增加该百分比

    我正在编写一个网络应用程序 该应用程序的流量每天都在稳步增加 我想创建一个警报 可以检测我的读 写限制是否达到一定百分比 例如 80 然后增加该限制 然后我会在午夜再次减少它 我尝试过创建一个警报 平均 似乎有点无用并且始终为 1 0 Su
  • Java 8 拆分字符串并在 Map 内创建 Map

    我有一个像这样的字符串101 1 5 101 2 4 102 1 5 102 2 5 102 3 5 103 1 4 我想将其添加到Map
  • 使用 r 中的 ggplot 将数据框的 n 列绘制为线条

    我正在尝试重新创建 P lya 瓮模型 https en wikipedia org wiki P lya urn model 在 R 中 使用 ggplot 该模型基本上从 瓮 中的 1 个白色球和 1 个黑色球开始 然后随机选择一个球并
  • generic.xaml 文件位于哪里?

    如果你想使用默认的样式 颜色等 你需要从通用 xaml附带的文件Windows应用程序开发工具包NuGet 包 因此问题是 通用 xaml file 你可以找到默认的通用 xaml每个里面Windows应用程序开发工具包NuGet 包文件夹
  • 如何在 Xcode 8 中启用可视内存调试器?

    我将一个项目从以前版本的 Xcode 迁移到 Xcode 8 我想要的是使用新的可视内存调试器 它在新项目中可用 但在我导入的项目中完全缺失 为什么是这样 Visual Memory Debugger 似乎需要 Swift 3 才能工作 我
  • 无需 PIN/密码即可从 PKCS11 智能卡获取证书

    摘要 当在 OpenSC 上使用 JCA over PKCS11 时 提取证书时需要 PIN 我有一个需要使用智能卡签名的应用程序 该智能卡受 OpenSC 支持 因此我使用 Java 内置的 pkcs11 包装器提供程序来使用它 出于功能
  • PKG 生成字节码失败

    当我尝试运行 pkg index js t macOS 时收到此警告 节点 v17 3 1 电子邮件受保护 警告无法为文件 snapshot index js 制作字节码node17 arm64 希望有人能帮忙 我也尝试过使用 b 并得到
  • JMF更换

    JMF 很旧 不能正确支持很多编解码器 这些天我在后台使用 FFMPEG 但我想切换到本机 java 解决方案 如果存在 有人知道当前具有媒体操作功能的开源 Java 项目吗 虽然不是 100 原生 但您也可以使用Xuggler 它是一个开
  • 如何防止文档正文上的点击事件(也许是 Cordova 中的错误?)

    我是一名初学者 尝试使用 Kinetic Js 和 phonegap build 开发手机游戏 我遇到了一个我不知道如何解决的问题 我做了一些测试 我刚刚粘贴了这段代码在这里进入我的index html并将代码发送到音隙构建它从 html
  • 为什么Tomcat不会绑定关闭端口(8005)?

    Tomcat 启动并运行得很好 但从未绑定到 8005 关闭端口 所以 我只能以杀死它的方式来结束它 我正在启动 Tomcat catalina sh start or startup sh 结果是相同的 Server xml 片段
  • 当最终链接隐藏时,下载保留原始文件名的文件

    我需要下载一个文件 将其保存在一个文件夹中 同时保留网站上的原始文件名 url lt http www seg social es prdi00 idcplg IdcService GET FILE dID 187112 dDocName
  • Python xlrd:抑制警告消息

    我在用xlrd处理 Excel 文件 我正在包含许多文件的文件夹上运行脚本 并且正在打印与这些文件相关的消息 但是 对于我运行的每个文件 我还会收到以下 xlrd 生成的错误消息 WARNING OLE2 inconsistency SSC
  • 如何高效地从 HashMap 中查找和插入?

    我想做以下事情 查找一个Vec对于某个密钥 并存储它以供以后使用 如果不存在则创建一个空的Vec为键 但仍将其保留在变量中 如何有效地做到这一点 我自然认为我可以使用match use std collections HashMap Thi
  • Chrome 版本 66:阻止当前来源接收跨站点文档

    在我的本地计算机上 我一直在使用 disable web security user data dir 禁用网络安全 升级到 Chrome 版本 66 后 我开始收到阻止当前来源接收跨站点文档的警告 如何禁用此版本 chrome 的网络安全
  • 使用 ref-qualifiers 成员函数重载的调用不明确

    在编译我的代码时 我发现了一个奇怪的行为G gcc4 8 1 和MinGW4 8 2 与 std gnu 1y旗帜 本着 SSCCE 的精神 我隔离了以下片段 struct C template lt typename X gt auto
  • 确保 Linux 中应用程序的单个实例

    我正在 WxPython 中开发 GUI 应用程序 我不确定如何确保在任何给定时间机器上只有应用程序的一个副本正在运行 由于应用程序的性质 多次运行没有任何意义 并且很快就会失败 在 Win32 下 我可以简单地创建一个命名互斥体并在启动时
  • VS 2017 通过文件路径引用本地项目(就像在 VS 2015 中使用 global.json 一样)

    在 VS 2015 中 我们曾经能够在 global json 中指定本地路径 如下所示 projects src test C path to other projects 然后 它将将该路径中的所有项目添加到当前解决方案中 使我们能够轻
  • 如何在 capistrano 中使用 --trace 运行 rake?

    我希望 capistrano 使用 trace 调用 rake 这样我就可以找出它失败的原因 我该怎么做呢 set rake rake trace 不起作用 我发现的最好的方法是 set rake rake trace 这样你就不会覆盖ra
  • React JS 按升序和降序排序

    我一直在使用sortBy from lodash 但继续得到 src components Product js Syntax error Unexpected token 17 29 15 sortByPrice 16 this setS