У меня есть класс компонента, который я использую для подключения хранилища избыточности, но я получаю сообщение об ошибке, когда пытаюсь передать компонент в функцию подключения.
_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
}
{ "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 }
Спасибо. Я считаю, что ответ ниже правильный.
Просто обновите свой 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\ReactNativeRenderer-dev.js"
Это произошло из-за того, что вы использовали самую последнюю версию react-redux, зависящую от react.memo API, которая не поддерживается Expo SDK. Чтобы решить эту проблему, вы можете установить более старую версию react-redux, например версию 6.0.
Вернулся к этой версии, вылезает другая ошибка Unable to resolve "./utils/batch" from "node_modules\react-redux\lib\index.js"
Используйте точную версию 6.0.0 вместо 6.0.1. Надеюсь, это решит вашу проблему.
Я использую версию 6.0.0 реакции-редукции
Некоторое время назад я думаю, что это та же проблема, что и у вас. Я обновился до последней версии 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"
Скидываем все и устанавливаем вот так. оно работает
У меня была такая же проблема, и она была исправлена, когда я понизил свой реактивный редукс до версии 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
Можете ли вы опубликовать свой package.json?