Как повторно использовать магазин Redux из библиотеки React - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть два репозитория, разделенных следующим образом:

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 моего основного приложения.

Любая помощь будет принята.

Спасибо!

...