Это должно быть временное решение (удалите его после завершения перезаписи), потому что оно довольно грязное, но вы можете просто запустить функцию jQuery off на вашем элементе React при монтировании.
Чтобы упростить использование (и удаление), вы также можете создать HOC, чтобы сделать это в одном месте, что-то вроде этого:
function withJqueryOffEvent(WrappedComponent, event) {
return class extends React.Component {
componentDidMount() {
$(this.el).off(event);
}
render() {
return <WrappedComponent ref={el => this.el = el} {...this.props} />;
}
};
}
// use it like any other HOC
withJqueryOffEvent(AnyComponent, 'click');
Здесь мы просто создаем базовый HOCкоторые принимают имя события, прикрепляют ref к обернутому компоненту в рендере и используют этот ref в селекторе jquery после монтирования, чтобы сделать off .