web-dev-qa-db-fra.com

Comment réparer '_react ["default"]. Memo n'est pas une fonction. (Dans '_react ["default"]. Memo (connectFunction)' erreur dans React native?

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"
},
13
Ahmed Saeed

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.

1
iWorld