我正在尝试通过Container将Redux mapStateToProps()和mapActionCreators()连接到登录屏幕,并且正在使用React导航。
构建我的应用程序后,出现以下错误消息:
_react [“ default”]。memo不是函数。 (在'_react [“ defaults”]。memo(connectFunction)'中,'_ react [“ defaults”]。memo'未定义。
我搜索了一段时间,但得到的是React.memo()帮助我们控制组件何时重新呈现,但我没有使用任何与React.memo()相关的代码。
登录屏幕:(screens / LoginScreen / index.js)
import React from 'react';
import {Dimensions, View} from 'react-native';
//Get width of mobile screen
var width = Dimensions.get("window").width;
var height = Dimensions.get("window").height;
export default class LoginScreen extends React.Component {
constructor(props){
super(props);
this.state = {
}
}
render() {
return (
<View style={styles.container}>
<Text>Log In page</Text>
</View>
);
}
}
LoginScreen.defaultProps = {
}
const styles = {
container: {
flex: 1
}
}
登录屏幕容器:(containers / LoginContainer / index.js)
import {connect} from "react-redux";
import LoginScreen from "../../screens/LoginScreen";
const mapStateToProps = (state) =>({
});
const mapActionCreators = {
};
export default connect(mapStateToProps, mapActionCreators)(LoginScreen);
顶级导航:(navigations / TopLevelSwitchNav.js)
import {createSwitchNavigation, createAppContainer} from 'react-navigation';
import LoginScreen from '../containers/LoginContainer';
import MainTabNav from './MainTabNav';
const TopLevelSwitchNav = createSwitchNavigation({
Login: {
screen: LoginScreen,
navigationOptions: {
header: null
}
},
MainTab: {
screen: MainTabNav,
navigationOptions: {
header: null
}
}
},
{
initialRouteName: Login,
navigationOptions: { header: null }
});
export default createAppContainer(TopLevelSwitchNav);
依赖项:
"dependencies": {
"expo": "^32.0.0",
"react": "16.5.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
"react-navigation": "^3.8.1",
"react-redux": "^7.0.2",
"redux": "^4.0.1",
"redux-logger": "^3.0.6",
"redux-persist": "^5.10.0",
"redux-persist-transform-filter": "^0.0.18",
"redux-thunk": "^2.3.0"
},
答案 0 :(得分:13)
我解决了它,看来React-Redux包依赖于React 16.8.0并以某种方式使用React.memo(),所以我将React-Redux降级到v6.0.0
答案 1 :(得分:8)
与上述解决方案相同,但有说明。确保清除Expo缓存!
将您的react-redux降级到6.0.1版本
npm install react-redux@6.0.1
清除Expo中的缓存
expo r -c
答案 2 :(得分:1)
将您的react-redux降级到v6.0.0并通过以下方式启动expo项目 expo r -c 重置缓存
答案 3 :(得分:0)