#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 для любых общих библиотек.