J'essaie de connecter Redux mapStateToProps () et mapActionCreators () à l'écran de connexion via Container et j'utilise React navigation.
Après avoir créé mon application, le message d'erreur suivant apparaît:
_react ["default"]. memo n'est pas une fonction. (Dans '_react ["defaults"]. Memo (connectFunction)', '_react ["defaults"]. Memo' n'est pas défini.
J'ai cherché pendant un certain temps, mais ce que j'ai obtenu, c'est que React.memo () nous aide à contrôler le moment où nos composants se rendent, mais je n'utilise aucun code lié à React.memo ().
Écran de connexion: (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
}
}
Conteneur de l'écran de connexion: (conteneurs/LoginContainer/index.js)
import {connect} from "react-redux";
import LoginScreen from "../../screens/LoginScreen";
const mapStateToProps = (state) =>({
});
const mapActionCreators = {
};
export default connect(mapStateToProps, mapActionCreators)(LoginScreen);
Navigation de haut niveau: (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);
Dépendances:
"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"
},
Je ne peux pas encore commenter, alors ajoutez ceci comme un ajout à la réponse d'Ahmed Saeed ci-dessus . À compter d'aujourd'hui, le 17 avril, les crochets ne sont pas encore pris en charge sur Expo, en savoir plus ici . Depuis v.7.0.1 react-redux
connect utilise désormais React.memo () en interne, qui renvoie un objet spécial plutôt qu'une fonction.
Et c'est réécrit avec des crochets. La rétrogradation de react-redux vers v.6.0.0 aide.