Можно ли использовать редукционную форму с easy-peasy?
я пробую вот так
// @flow
import {
type TRootReducer,
} from './TRootReducer';
import {
createStore,
reducer,
} from 'easy-peasy';
import createHistory from 'history/createBrowserHistory';
import { routerMiddleware, routerReducer } from './router';
import { reducer as formReducer } from 'redux-form';
import { reducer as permissions } from 'react-redux-permissions';
import auth from '../features/Auth/reducers';
export const history = createHistory();
const middleware = [routerMiddleware];
const store = createStore<TRootReducer>(
{
auth,
permissions: reducer(permissions),
router: reducer(routerReducer),
form: reducer(formReducer),
},
{
config: {
middleware,
},
}
);
export default store;
Затем в моих компонентах формы
export default reduxForm({ form: 'login' })(Login);
Но я получаю сообщение об ошибке
Could not find "store" in either the context or props of "Connect(Form(Login))". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(Form(Login))".
Ну, я думаю, это происходит потому, что reduxForm использует внутреннее соединение react-redux. Есть ли способ обойти это?
Вы должны добавить тег <Provider>
в корневой индекс:
import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import { StoreProvider } from 'easy-peasy';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
ReactDOM.render(
<Provider store = {store}>
<StoreProvider store = {store}>
<App />
</StoreProvider>
</Provider>
, document.getElementById('root'));
serviceWorker.unregister();