Thi*_*ert 5 reactjs redux react-redux
首先,我是 React 和 Redux 的初学者。
我正在尝试将组件从一个项目转移到另一个项目。我将一个项目制作为 npm 包,这样我就可以直接从该项目导入。问题是我在我的主项目中使用了一个商店,并且我的 npm 包也使用了一个商店。这会导致状态未定义,因为我只向提供商提供一个商店。
这是我的主项目中的 index.js,我知道你不能有 2 个 Provider,但我想指出我正在寻找具有两个商店的功能:
import { guiReducer, intlInitialState } from 'second-project';
const secondStore = createStore(guiReducer, intlInitialState);
const store = configureStore();
render(
<Provider store={store}>
<Provider store={secondStore}
<Router>
<App />
</Router>
</Provider>
</Provider>
Run Code Online (Sandbox Code Playgroud)
这是configureStore.js:
import rootReducer from '../reducers';
function configureStoreProd(initialState){
return createStore(
rootReducer,
initialState,
applyMiddleware(thunk)
);
}
const configureStore =
process.env.NODE_ENV === 'production' ? configureStoreProd : configureStoreDev;
export default configureStore;
Run Code Online (Sandbox Code Playgroud)
rootReducer 是来自主项目的组合减速器,guiReducer 是来自第二个项目的组合减速器。rootReducer 的示例代码(与 guiReducer 类似):
const appReducer = combineReducers({
loggedIn,
courses,
lessons,
organisation,
});
const rootReducer = (state,action) => {
if (action.type === LOGOUT) {
state = initialState;
}
return appReducer(state,action);
};
export default rootReducer;
Run Code Online (Sandbox Code Playgroud)
我还尝试结合 root/gui-reducers 并创建一个像这样的新商店(configureStore.js):
function configureCombinedStoreProd(initialState){
return createStore(
combineReducers({
rootReducer,
guiReducer,
}), initialState, applyMiddleware(thunk)
);
}
const configureCombinedStore =
process.env.NODE_ENV === 'production' ? configureCombinedStoreProd :
configureCombinedStoreDev;
export {configureCombinedStore as configureCombinedStore };
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我目前已经解决了这个问题,方法是使用第二个项目中的 a 将组件包装在 App.js 中,
<Provider store={store}>
而在 index.js 中,“App”则使用主项目中的提供程序进行包装。
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |