У меня есть два репозитория, разделенных следующим образом:
main-app
: create-react-app
проект, определяющий хранилище с редуктором с некоторыми редукторами.
const reducers = combineReducers({
reducer1: myReducer
});
const store = createStore(reducers);
const app = (
<Provider store={store}>
<App />
</Provider>
);
ReactDOM.render(app, document.getElementById('root'));
и компонент App
возвращая <AppHeader />
в методе render
, определенном ниже, в моей библиотеке lib-header
.
lib-header
: внешняя библиотека, использующая хранилище основного приложения, определенная следующим образом:
class AppHeader extends Component {
render() {
return (
<div>{this.props.isAuthenticated ? 'User authenticated' : 'User not authenticated'}</div>
);
}
}
AppHeader.propTypes = {
isAuthenticated: PropTypes.bool,
onSignin: PropTypes.func
};
const mapStateToProps = state => {
return {
isAuthenticated: state.auth.token !== null
}
};
const mapDispatchToProps = dispatch => {
return {
onSignin: () => dispatch(actions.signIn())
}
};
export default connect(mapStateToProps, mapDispatchToProps)(AppHeader);
Однако, когда lib-header
пытается использовать функцию connect(...)
, он генерирует эту ошибку:
Не удалось найти «store» в контексте «Connect (e)».Либо оберните корневой компонент в a, либо передайте пользовательский поставщик контекста React соответствующему получателю контекста React в Connect (e) в параметрах соединения.
По некоторым причинам хранилище, определенное в Provider
основного приложения не попадает во внешнюю библиотеку, хотя компонент AppHeader
определен внутри компонента Provider
моего основного приложения.
Любая помощь будет принята.
Спасибо!