Как отменить избыточное действие внутри реагирующего компонента - PullRequest
3 голосов
/ 30 мая 2019

Поэтому я пытаюсь отменить некоторые действия внутри реагирующего компонента.

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?Мне нужно сохранить оба, потому что один для фильтрации второй (отклонен) для поиска.

1 Ответ

3 голосов
/ 30 мая 2019

Определенно возможно отменить обработчик события, который затем использует действие.

class SomeClass extends Component {

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

  // ...
}

Он также гарантирует, что каждый раз, когда выполняется обратный вызов события, он использует текущее значение проп, поэтому он всегда работаетна сегодняшний день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...