#reactjs #redux #react-redux #redux-thunk #react-redux-firebase
#reactjs #redux #реагировать-redux #redux-thunk #react-redux-firebase
Вопрос:
Некоторое время я сталкивался с ошибкой, я искал в Интернете все ответы, которые я нашел в Stack Overflow, и GitHub был связан с обновлением React или исправлением орфографии импорта, я все это сделал, но все равно сложил.
Вот мой магазин
import { compose, createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import firebase from '../firebase/Firebase';
import { reactReduxFirebase, getFirebase } from 'react-redux-firebase';
import rootReducer from './reducers/rootReducer';
// react-redux-firebase config
const rrfConfig = {
userProfile: 'users',
useFirestoreForProfile: true, // Firestore for Profile instead of Realtime DB
attachAuthIsReady: true, // attaches auth is ready promise to store
};
const store = createStore(
rootReducer,
compose(
reactReduxFirebase(firebase, rrfConfig),
applyMiddleware(thunk.withExtraArgument({ getFirebase })),
// for redux dev tools
window.__REDUX_DEVTOOLS_EXTENSION__ amp;amp; window.__REDUX_DEVTOOLS_EXTENSION__()
)
);
export default store;
Вот мой index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { BrowserRouter } from 'react-router-dom';
import 'react-toastify/dist/ReactToastify.css';
import { Provider } from 'react-redux';
// store
import store from '../src/redux/store';
ReactDOM.render(
// <React.StrictMode>
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
// </React.StrictMode>,
document.getElementById('root')
);
serviceWorker.unregister();
Ответ №1:
После долгих исследований я нашел решение этой проблемы. Проблема связана с пакетом react-redux-firebase, они изменили способ инициализации пакета, вот новая структура кода.
Хранилище:
import { compose, createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import firebase from '../firebase/Firebase';
import { getFirebase } from 'react-redux-firebase';
import rootReducer from './reducers/rootReducer';
// react-redux-firebase config
const rrfConfig = {
userProfile: 'users',
useFirestoreForProfile: true, // Firestore for Profile instead of Realtime DB
attachAuthIsReady: true, // attaches auth is ready promise to store
};
const store = createStore(
rootReducer,
compose(
applyMiddleware(thunk.withExtraArgument({ getFirebase })),
window.__REDUX_DEVTOOLS_EXTENSION__ amp;amp; window.__REDUX_DEVTOOLS_EXTENSION__()
)
);
const rrfProps = {
firebase: firebase,
config: rrfConfig,
dispatch: store.dispatch,
// createFirestoreInstance // <- needed if using firestore
};
export { store, rrfProps };
Индекс js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { BrowserRouter } from 'react-router-dom';
import 'react-toastify/dist/ReactToastify.css';
import { Provider } from 'react-redux';
import { ReactReduxFirebaseProvider } from 'react-redux-firebase';
// store
import { store, rrfProps } from '../src/redux/store';
ReactDOM.render(
// <React.StrictMode>
<Provider store={store}>
<ReactReduxFirebaseProvider {...rrfProps}>
<BrowserRouter>
<App />
</BrowserRouter>
</ReactReduxFirebaseProvider>
</Provider>,
// </React.StrictMode>,
document.getElementById('root')
);
serviceWorker.unregister();
Именно здесь я нашел решение react-redux-firebase