javascript - 如何在 React 组件内部去抖动 redux Action

标签 javascript reactjs ecmascript-6 redux

所以我正在尝试对 React 组件中的一些 Action 进行去抖。

import React, {Component} from "react";
import debounce from "lodash/debounce";
...

@connect(
  mapStateToProps,
  {someAction}
)
class SomeClass extends Component {
  constructor(props) {
    ...
    this.debouncedAction = debounce(props.someAction, 300);// someAction works ok
  }

  onSomeEvent = (...args) => {
   this.debouncedAction(args); // this does not work
  }
}

所以修改后的debouncedAction没有被调用。有没有一种方法可以在不在 mapStateToProps 中创建额外操作的情况下做到这一点? 我需要保留两者,因为一个用于过滤第二个(去抖动)以进行搜索。

最佳答案

绝对有可能去抖事件处理程序,然后使用该操作。

class SomeClass extends Component {

  // Debounce the event handler here instead
  onSomeEvent = debounce((...args) => {
    const { someAction } = this.props;
    someAction(...args);
  }, 300)

  // ...
}

它还确保每次执行事件回调时,它都使用当前的 prop 值,因此它始终是最新的。

关于javascript - 如何在 React 组件内部去抖动 redux Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382480/

相关文章:

javascript - 如何将参数传递给内联 JavaScript 函数

javascript - 饼图在每次刷新时都会在某些显示器上调整大小

javascript - 使用 Flux 构建一个编辑表单,实际上是谁将数据 POST 到服务器 : actions, 存储、 View ?

javascript - React 中实际应该渲染的内容

javascript - 为什么 JSX props 不应该使用箭头函数或绑定(bind)?

javascript - 常规字符串和模板字符串之间的性能差异?

javascript - Socket.IO仅发送给一个客户端,而不发送给另一个客户端

javascript - 使用 jQuery 将数据发布到 MVC 操作方法

javascript - 根据 CORS 预检响应中的 header ‘Access-Control-Allow-Headers’,不允许使用“内容类型”

javascript - 是否可以进行有条件的解构或有后备?