Миграция React-Redux с 5.x на 7.x прервала `подключение`

#javascript #reactjs #redux #react-redux

Вопрос:

Я пытаюсь перейти с react-redux (https://www.npmjs.com/package/react-redux) до 7.x с 5.x, чтобы использовать крючки и добиться некоторых существенных изменений с помощью функции connect (). Это продолжает выдавать мне ошибку о том, что я должен завернуть свое приложение в поставщика, который у меня уже есть.

Ошибка:

 Uncaught (in promise) Invariant Violation: Could not find "store" in either the context or props of "Connect(DateRangeSelector)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(DateRangeSelector)".
 

Код поставщика:

 import React from 'react';
import { Provider } from 'react-redux';

import store from 'scripts/setup';
import FullReactComponent from 'root/FullReactComponent';


const App = () => (
  <Provider store={store}>
      <FullReactComponent />
  </Provider>
);

export default App;
 

Код подключения:

 FullReactRootComponent.propTypes = {
  bgColor: PropTypes.string.isRequired,
};

export const mapStateToProps = ({ portal }) => ({
  bgColor: portal.get('bgColor'),
});

export const mapDispatchToProps = {
  fetchEnabledRoutes: actions.fetchEnabledRoutes,
};

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(FullReactRootComponent);
 

Кто-нибудь сталкивался с этой проблемой при обновлении? Есть ли изменения в API подключения?

Изменить: Вот пример того, как неправильно вызывается соединение между двумя снимками:

5.х:

  <Connect(ModalComponent) open={true}>
   <ModalAdd /> 
</Connect(ModalComponent)>
 

7.x:

 <ModalComponent
  open={true}
/>
 

Комментарии:

1. Основные изменения в версии 6 перечислены здесь: github.com/reduxjs/react-redux/releases/tag/v6.0.0 . Аналогично, для v7: github.com/reduxjs/react-redux/releases/tag/v7.0.1

2. но код выглядит довольно хорошо для меня, сломанная часть должна быть где-то в другом месте.

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

4. У вас случайно как-то есть несколько версий React-Redux в приложении?

5. Вы знаете, что получаете хороший совет, когда @markerikson приходит для отладки вашей проблемы с исправлением.

Ответ №1:

От @markerikson выяснилось, что у меня в yarn.lock были дубликаты react-redux. Чтобы исправить, я вставил react-redux resolutions в package.json и заставил его быть 7.x для любых общих библиотек.