我有一个组件类,我正在使用react-redux连接redux存储,但是当我尝试将组件传递给connect函数时出现错误。
_react.default.memo不是函数。 (在'_react.default.memo(ConnectFunction)中, '_react.default.memo'未定义)
wrapWithConnect C:\ Users \ SESA506797XmobileApp Gatherman \ node模块化react-redux \ lib \ components connectAdvanced.js:339:45
I enclose an image of the generated errerur
这是调用connect的类的内容
FilmDetail
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)
这是我的package.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
}
答案 0 :(得分:4)
前段时间,我认为与您存在相同的问题。我使用以下命令更新到了最新的React版本:
npm install react@latest
然后使用以下命令安装了React Schedule软件包的0.4.0版本:
npm i schedule@0.4.0 --save-dev
并使用降级了react-redux
npm i react-redux@6.0.1
至少在我的问题得到解决的那一刻,希望它能与您的一起解决。
答案 1 :(得分:1)
如果您正在使用expo,则必须降级react-redux并清除expo缓存。
npm i react-redux@6.0.1
npm i
expo r -c
答案 2 :(得分:0)
只需将您的React更新到最新版本。它是向后兼容的,因此不必担心。
npm install react@latest
React.memo仅在React 16.6及更高版本上可用。
答案 3 :(得分:0)
发生这种情况是因为您使用了依赖于react.memo API的最新版本的react-redux,Expo SDK不支持该版本。要解决此问题,您可以安装旧版本的react-redux,例如6.0版。
答案 4 :(得分:0)
我遇到了同样的问题,并在我将react-redux降级到4.4.9版本时得到修复
npm install react-redux@4.4.9
或者如果您使用纱线
yarn add react-redux@4.4.9
希望它也对您有用。但是首先请确保这种急剧的降级不会对您的项目产生负面影响。
答案 5 :(得分:0)
有同样的问题。通过切换到yarn并使用以下设置重新安装所有模块来解决该问题:
{
"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
}