#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
Это сохраняет хранилище локальным для компонента.