как экспортировать проект react-redux в качестве node_module

#javascript #reactjs #redux

#javascript #reactjs #redux

Вопрос:

Я пытаюсь экспортировать проект redux как node_module который имеет index.js показано ниже (упрощенно):

 import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import promiseMiddleware from 'redux-promise-middleware';
import App from './App.jsx';

const middlewares = [thunk.withExtraArgument(), promiseMiddleware()];
const middlewareEnhancer = applyMiddleware(...middlewares);
const preloadedState = {};

const store = createStore(
    rootReducer,
    preloadedState,
    middlewareEnhancer
);

 const ExampleModule = (props) => {
    return (
        <Provider store={store}>
            <App />
        </Provider>
    );
};

export default ExampleModule;
  

В моем основном приложении:

 ...
import ExampleModule from 'example-module';

class Application extends React.Component {
    render() {
        return <ExampleModule />;
    }
}

function mapStateToProps({ state }) {
    return {
        state: state
    };
}

function mapDispatchToProps(dispatch) {
    return { 
        actions: bindActionCreators(require('..').actions, dispatch) 
    };
}

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

Это выдает ошибку:
bundle.js:349 Uncaught Invariant Violation: Could not find "store" in either the context or props of "Connect(App)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(App)"

Я предполагаю, что это потому, что это по существу создает вложенный <Providers> , что противоречит методологии Redux для одного хранилища.

Мой вопрос заключался бы в том, каким был бы наилучший способ опубликовать node_module, в котором есть хранилище redux?

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

1. Обычно вы экспортируете редукторы и компоненты отдельно, например, redux-form.com/8.1.0 Зачем вам нужно новое хранилище?

2. @DvidSilva нашел ответ здесь! redux.js.org/recipes/isolating-redux-sub-apps

Ответ №1:

Нашел ответ здесь:https://redux.js.org/recipes/isolating-redux-sub-apps

Это сохраняет хранилище локальным для компонента.