我使用redux-thunk作为中间件,并试图连接到redux-firestore。当我运行应用程序时,我得到的是错误"TypeError: Object(.)不是createStore上的“。
import reportWebVitals from './reportWebVitals';
import {createStore,applyMiddleware,compose} from 'redux';
import rootReducer from './store/reducers/rootReducer';
import {Provider} from 'react-redux';
import thunk from 'redux-thunk'
import {reduxFirestore, getFirestore} from 'redux-firestore'
import {reactReduxFirebase, getFirebase} from 'react-redux-firebase'
import FBConfig from './Config/FBConfig'
const store = createStore(rootReducer,
compose(applyMiddleware(thunk.withExtraArgument({getFirestore,getFirebase})),
reduxFirestore(FBConfig),
reactReduxFirebase(FBConfig)
)
);在这样的动作中,我使用了额外的参数:
export const createProject=(project)=>{
return(dispatch,getState,{getFirebase,getFirestore})=>{
//asyn call to database
const firestore=getFirestore();
firestore.collection('projects').add({
...project,
authorFirstName:'Nam',
authorLastName:'Pam',
authorId:123,
createAt: new Date()
}).then(()=>{
dispatch({type:'CREATE_PROJECT',project});
}).catch((err)=>{
dispatch({type:'CREATE_PROJECT_ERROR',err})
})
}
};发布于 2021-03-08 21:10:23
您所看到的错误可能是由于升级了react-redux-firebase 从v2到v3 (或者根据过时的示例编写新代码)。此更新引入了一些突破性的更改,例如删除了reactReduxFirebase存储增强器功能。这个包现在使用了function上下文,并引入了一些新的钩子,比如useFirebase和useFirestore,它们允许您通过函数组件中的上下文访问防火墙。但这对你的扣篮没什么帮助。
在Redux Thunk集成上的页面中,他们建议将getFirebase函数传递给withExtraArgument。
thunk.withExtraArgument(getFirebase)至于访问防火墙,这个GitHub的讨论建议通过getFirebase函数访问它。
getFirebase().firestore()您希望额外的参数是一个具有属性getFirebase和getFirestore的对象。我们使用getFirebase作为一个属性,并为getFirestore属性创建内联箭头函数。
import {createStore,applyMiddleware, AnyAction} from 'redux';
import thunk from 'redux-thunk';
import {getFirebase} from 'react-redux-firebase';
const store = createStore(
rootReducer,
applyMiddleware(
thunk.withExtraArgument({
getFirebase,
getFirestore: () => getFirebase().firestore(),
})
)
);https://stackoverflow.com/questions/66536513
复制相似问题