reactjs - TypeError: Object(...) is not a function Redux Store
问题描述
我被错误堆积了一段时间,我在网上搜索了我在 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__ && 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();
解决方案
经过大量研究,我找到了解决这个问题的方法。问题在于 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__ && 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 的地方
推荐阅读
- laravel - 对于 Laravel 的任务调度程序,我是否必须每分钟运行一次 cron,还是可以不那么频繁地运行?
- python-3.x - Kivy 管理多个页面和小部件
- sql - 仅在 SQL Server 中该特定名称的所有重叠日期范围的最小和最大日期
- python - python selenium 属性错误在while循环中使用.click()同时尝试除
- powershell - 如何用powershell替换txt文件开头的换行符
- postgresql - 尝试为复杂的 Postgres 查询编写 JPQL
- ios - 如何确定“NSUbiquitousKeyValueStore.default.set”结果是否成功
- javascript - 循环计算多个值
- laravel - 如何在 laravel 中为多类电子商务创建动态路由?
- javascript - Jquery复选框仅在检查取消选中然后检查时切换