要让reduxFirestore
在React应用中正常工作并解决TypeError: getFirestore is not a function/ ts(2345)
错误,您需要进行以下操作:
reduxFirestore
和相关依赖项。您可以使用以下命令安装所需的包:npm install redux react-redux firebase reduxFirestore
reduxFirestore
。在您的应用程序的入口文件中,您需要进行以下配置:import { createStore, applyMiddleware, compose } from 'redux';
import { Provider } from 'react-redux';
import { createFirestoreInstance, getFirestore } from 'redux-firestore';
import { ReactReduxFirebaseProvider, getFirebase } from 'react-redux-firebase';
import firebase from 'firebase/app';
import 'firebase/firestore'; // 如果您需要使用Firestore数据库
// 创建Firebase配置对象
const firebaseConfig = {
// 您的Firebase配置
};
// 初始化Firebase
firebase.initializeApp(firebaseConfig);
// 创建Redux store
const store = createStore(
// 您的根reducer
// ...
applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore }))
);
// 创建Redux和Firebase的配置对象
const rrfConfig = {
userProfile: 'users',
useFirestoreForProfile: true,
};
// 创建React Redux Firebase提供程序
const rrfProps = {
firebase,
config: rrfConfig,
dispatch: store.dispatch,
createFirestoreInstance,
};
// 渲染应用程序
ReactDOM.render(
<Provider store={store}>
<ReactReduxFirebaseProvider {...rrfProps}>
<App />
</ReactReduxFirebaseProvider>
</Provider>,
document.getElementById('root')
);
react-redux-firebase
提供的高阶组件。例如,在使用firestoreConnect
高阶组件获取数据时,您需要使用compose
函数和connect
函数将它们组合在一起。例如:import { compose } from 'redux';
import { connect } from 'react-redux';
import { firestoreConnect } from 'react-redux-firebase';
// 创建组件
const MyComponent = () => {
// ...
}
// 使用高阶组件连接到Firestore并从state获取数据
export default compose(
firestoreConnect([{ collection: 'myCollection' }]),
connect((state) => ({
myData: state.firestore.data.myCollection,
}))
)(MyComponent);
getFirestore
函数。在您的组件中,您可以按如下方式使用它:import { getFirestore } from 'redux-firestore';
// 在组件中使用getFirestore
const myFunction = () => {
const firestore = getFirestore();
// ...
}
通过以上步骤,您应该能够让reduxFirestore
在React应用中正常工作,并解决TypeError: getFirestore is not a function/ ts(2345)
错误。请注意,这只是一个示例答案,具体的实现可能因应用程序的不同而有所不同。希望对您有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云