Я использую пакет npm redux-inject-reducer-and-saga.
Он был создан с Reaction-Redux v.5.
Под капотом есть функция, которая возвращает функцию, которая создает класс React (код ниже), а затем внутри этого класса есть функция getInjectors , которая использует this.context.store для проверки магазина.
Начиная с 6-й версии, React-Redux меняет способ доступа к контексту. Компоненты должны быть обернуты внутри ReactReduxContext.
Итак, мой вопрос - как обернуть функции пакета с ReactReduxContext, чтобы получить доступ к хранилищу.
Спасибо за ваше время!
import PropTypes from "prop-types";
import hoistNonReactStatics from "hoist-non-react-statics";
import getInjectors from "./reducerInjectors";
export default ({key, reducer}) => WrappedComponent => {
class ReducerInjector extends Component {
static WrappedComponent = WrappedComponent;
static displayName = `withReducer(${WrappedComponent.displayName ||
WrappedComponent.name ||
"Component"})`;
static contextTypes = {
store: PropTypes.object.isRequired,
};
//THIS LINE
injectors = getInjectors(this.context.store);
UNSAFE_componentWillMount() {
const {injectReducer} = this.injectors;
injectReducer(key, reducer);
}
render() {
return <WrappedComponent {...this.props} />;
}
}
return hoistNonReactStatics(ReducerInjector, WrappedComponent);
};