this.props.fetch user不是一个函数


import React, { Component } from "react";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import { NavigationContainer, TabActions } from "@react-navigation/native";
import { fetchUser } from "../redux/actions";
const Tab = createBottomTabNavigator();
import FeedScreen from "./main/Feed";
import ProfileScreen from "./main/Profile";
import AddScreen from "./main/Add";
export class Main extends Component {
componentDidMount() {
this.props.fetchUser();
}
render() {
return (
<Tab.Navigator>
<Tab.Screen
name="Feed"
component={FeedScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="home" color={color} size={26} />
),
}}
/>
<Tab.Screen
name="Add"
component={AddScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="plus-box" color={color} size={26} />
),
}}
/>
<Tab.Screen
name="Profile"
component={ProfileScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons
name="account-circle"
color={color}
size={26}
/>
),
}}
/>
</Tab.Navigator>
);
}
}
const mapStateToProps = (store) => ({
currentUser: store.userState.currentUser,
});
const mapDispatchProps = (dispatch) => bindActionCreators({});
export default connect(mapStateToProps, mapDispatchProps)(Main);

这是我的代码,我很困惑,它说它导入了,但fetchUser没有被读取。

我想从这个文件中导出它

import { USER_STATE_CHANGE } from "../constants/index";
import firebase from "firebase/compat/app";
import "firebase/compat/auth";
import "firebase/compat/firestore";
export function fetchUser() {
return (dispatch) => {
firebase
.firestore()
.collection("user")
.doc(firebase.auth().currentUser.uid)
.get()
.then((snapshot) => {
if (snapshot.exists) {
dispatch({ type: USER_STATE_CHANGE, currentUser: snapshot.data() });
} else {
console.log("does not exist");
}
});
};
}

如果有人可以请帮忙。我已经被这个问题困扰了好几天了

我试着搜索论坛,没有发现任何东西。我又上了一遍这门课,还是一无所获。我目前正在努力完成一个重要项目的最后期限,但我还没有找到一个解决方案。我已经安装了所有必需的软件包,但仍然没有成功。源代码也没有多大帮助,所以如果有人能帮助它将是非常感激的。

试着让你的mapDispatchToProps像这样:

const mapDispatchProps = (dispatch) => ({ fetchUser: () => fetchUser()(dispatch) });

下面是应用了更改的完整文件:

import React, { Component } from "react";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityIcons";
import { connect } from "react-redux";
import { bindActionCreators } from "redux";
import { NavigationContainer, TabActions } from "@react-navigation/native";
import { fetchUser } from "../redux/actions";
const Tab = createBottomTabNavigator();
import FeedScreen from "./main/Feed";
import ProfileScreen from "./main/Profile";
import AddScreen from "./main/Add";
export class Main extends Component {
componentDidMount() {
this.props.fetchUser();
}
render() {
return (
<Tab.Navigator>
<Tab.Screen
name="Feed"
component={FeedScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="home" color={color} size={26} />
),
}}
/>
<Tab.Screen
name="Add"
component={AddScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons name="plus-box" color={color} size={26} />
),
}}
/>
<Tab.Screen
name="Profile"
component={ProfileScreen}
options={{
tabBarIcon: ({ color, size }) => (
<MaterialCommunityIcons
name="account-circle"
color={color}
size={26}
/>
),
}}
/>
</Tab.Navigator>
);
}
}
const mapStateToProps = (store) => ({
currentUser: store.userState.currentUser,
});
const mapDispatchProps = (dispatch) => ({ fetchUser: () => fetchUser()(dispatch) });
export default connect(mapStateToProps, mapDispatchProps)(Main);

最新更新