Ошибка при использовании подключения (функция библиотеки react-redux)

У меня есть класс компонента, который я использую для подключения хранилища избыточности, но я получаю сообщение об ошибке, когда пытаюсь передать компонент в функцию подключения.

_react.default.memo is not a function. (In '_react.default.memo(ConnectFunction), '_react.default.memo' is undefined)

wrapWithConnect C:\Users\SESA506797XmobileApp Gatherman\node modul es react-redux\lib\components connectAdvanced.js: 339:45

Я прилагаю изображение сгенерированного erreur

Вот содержимое класса, в котором был вызван connect

ФильмДеталь

import React from 'react'
import { StyleSheet, View, ActivityIndicator, ScrollView, Text, Image } 
from 'react-native'
import { getFilmDetailFromApi, getImageFromApi } from '../API/TMDBApi'
import { connect } from 'react-redux'

class FilmDetail extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      film: undefined,
    }
  }
  componentDidMount() {
    getFilmDetailFromApi(this.props.navigation.state.params.idFilm).then(data => {
      this.setState({
        film:data,
        isLoading: false
      })
    })
  }

  _displayFilm(){
    const film = this.state.film
    if (film != undefined){
      return(
        <ScrollView style = {styles.scrollView_container}>
          <Image
            style = {styles.image}
            source = {{uri: getImageFromApi(film.backdrop_path)}}
          />
          <Text style = {styles.title_text}>{film.title}</Text>
          <Text style = {styles.description_text}>{film.overview}</Text>
          <Text style = {styles.default_text}>Note : {film.vote_average} / 10</Text>
        </ScrollView>
      )
    }
  }

  render() {
    return (
      <View style = {styles.main_container}>
        {this._displayFilm()}
      </View>
    )
  }
}

const styles = StyleSheet.create({
  main_container: {
    flex: 1
  },
})

const mapStateToProps = (state) => {
  return state
}

export default connect(mapStateToProps)(FilmDetail)

Это мой пакет.json

 {
      "main": "node_modules/expo/AppEntry.js",
      "scripts": {
        "start": "expo start",
        "android": "expo start --android",
        "ios": "expo start --ios",
        "eject": "expo eject"
      },
      "dependencies": {
        "expo": "^32.0.0",
        "numeral": "^2.0.6",
        "react": "16.5.0",
        "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
        "react-native-modal": "^9.0.0",
        "react-navigation": "^3.6.1",
        "react-redux": "^7.0.1",
        "redux": "^4.0.1"
      },
      "devDependencies": {
        "babel-preset-expo": "^5.0.0"
      },
      "private": true
    }

Можете ли вы опубликовать свой package.json?

Yossi 09.04.2019 21:32

{ "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "начало выставки", "android": "начало выставки --android", "ios": "начало выставки -- ios", "eject": "expo eject" }, "dependencies": { "expo": "^32.0.0", "numeral": "^2.0.6", "react": "16.5.0", "React-native": "github.com/expo/react-native/archive/sdk-32.0.0.tar.gz", "react-native-modal": "^9.0.0", "react-navigation": "^3.6.1", "react-redux": "^7.0.1" , "redux": "^4.0.1" }, "devDependencies": { "babel-preset-expo": "^5.0.0" }, "private": true }

Soutou 10.04.2019 03:02

Спасибо. Я считаю, что ответ ниже правильный.

Yossi 10.04.2019 06:57
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
6
3
4 841
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Просто обновите свой React до последней версии. Он обратно совместим, так что не о чем беспокоиться.

npm install react@latest

React.memo доступен только в React версии 16.6 и выше.

https://reactjs.org/blog/2018/10/23/react-v-16-6.html

Я делаю, как вы предложили. Теперь, перезапустив мой проект, у меня есть другая ошибка, которую невозможно решить "schedule/tracking" from "node_modules\react-native\Libraries\Renderer\oss\ReactNativ‌​eRenderer-dev.js"

Soutou 10.04.2019 14:16

Это произошло из-за того, что вы использовали самую последнюю версию react-redux, зависящую от react.memo API, которая не поддерживается Expo SDK. Чтобы решить эту проблему, вы можете установить более старую версию react-redux, например версию 6.0.

Вернулся к этой версии, вылезает другая ошибка Unable to resolve "./utils/batch" from "node_modules\react-redux\lib\index.js"

Soutou 12.04.2019 01:08

Используйте точную версию 6.0.0 вместо 6.0.1. Надеюсь, это решит вашу проблему.

Da Teng 12.04.2019 01:38

Я использую версию 6.0.0 реакции-редукции

Soutou 12.04.2019 01:49
Ответ принят как подходящий

Некоторое время назад я думаю, что это та же проблема, что и у вас. Я обновился до последней версии React с помощью:

npm install react@latest

Затем установил версию 0.4.0 пакета расписания реагирования с помощью:

npm i [email protected] --save-dev

И пониженная реакция-редукция с

npm i [email protected]

по крайней мере, на данный момент моя проблема решена, надеюсь, это сработает с вашей.

У меня такая же ошибка Unable to resolve "./utils/batch" from "node_modules\react-redux\lib\index.js"

Soutou 12.04.2019 02:22

Скидываем все и устанавливаем вот так. оно работает

Soutou 15.04.2019 11:54

У меня была такая же проблема, и она была исправлена, когда я понизил свой реактивный редукс до версии 4.4.9.

npm install [email protected] 

или если вы используете пряжу

yarn add [email protected]

Надеюсь, это сработает и для вас. Но сначала убедитесь, что это резкое понижение рейтинга не повлияет негативно на ваш проект.

Была такая же проблема. Это было решено переключением на пряжу и переустановкой всех модулей со следующей настройкой:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject"
  },
  "dependencies": {
    "@expo/vector-icons": "^9.0.0",
    "date-fns": "^1.30.1",
    "expo": "^32.0.6",
    "moment": "^2.24.0",
    "native-base": "^2.10.0",
    "react": "16.8.6",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-native-elements": "^0.19.1",
    "react-navigation": "^3.0.9",
    "react-redux": "^6.0.0",
    "redux": "^4.0.1"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.1.1",
    "schedule": "^0.4.0"
  },
  "private": true
}

Если вы используете expo, вам нужно понизить версию react-redux и очистить кеш expo.

npm i [email protected]

npm i

expo r -c

Другие вопросы по теме