Я использую Expo React Native для разработки мобильного приложения с помощью Redux, а также React-Redux.С React-Redux v6.0 я могу без проблем подключать компоненты, но не могу получить состояние из хранилища с v6.0, хотя с помощью Logger Middleware мое состояние уже обновлено.Я не могу использовать его после извлечения с mapStateToProps.Поэтому я решил обновить React-Redux до v7.0 в надежде, что проблемы будут решены, но я встретил новый (рисунок ниже).
Экран проблемы
Это мой App.js
import React from 'react';
import { Platform, StyleSheet, Text, View} from 'react-native';
import {Provider} from 'react-redux';
import store from './src/redux/configureStore';
import LocationShow from './src/components/LocationShow';
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<View style={styles.container}>
<LocationShow />
</View>
</Provider>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
Это мой LocationShow.js
import React from 'react';
import {View, Text, StyleSheet, ActivityIndicator} from 'react-native';
import {Location, Permissions, Constants} from 'expo';
import {connect} from 'react-redux';
import {Platform} from 'expo-core';
import * as locationActions from '../redux/actions/locationActions';
class LocationShow extends React.Component {
componentDidMount = async () =>{
if (Platform.OS === 'android' && !Constants.isDevice){
console.log('Switch to the real device dawg!')
}else{
await this.props.getCurrentLocation();
}
}
render(){
return(
<View>
{this.props.isLoading ?
<ActivityIndicator/>:
<View>
<Text>Latitude:{this.props.latitude}</Text>
<Text>Longitude:{this.props.longitude}</Text>
</View>
}
</View>
)
}
}
const mapStateToProps = (state) =>{
return{
latitude: state.latitude,
longitude: state.longitude,
error: state.error,
isLoading: state.isLoading
}
}
const mapDispatchToProps = (dispatch) =>{
return {
getCurrentLocation: () =>
dispatch(locationActions.getCurrentLocation())
}
}
export default connect(mapStateToProps, mapDispatchToProps)(LocationShow);
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
}
});
Я прочитал изменения v7.0 с помощью connect (), но я довольно новРеагируйте так, что я не могу понять это.
Примечание: connect теперь использует React.memo () внутри, что возвращает специальный объект, а не функцию.Любой код, который предполагал, что компоненты React являются только функциями, является неправильным и ошибочным с момента выпуска React 16.6.Если вы использовали PropTypes для проверки правильности типов компонентов, вам следует вместо этого перейти с PropTypes.func на PropTypes.elementType.
Я работаю React: v16.8.6, React-Native: 0.57.1,React-Redux: v7.0.2, Redux: v4.0.1
Надеюсь, кто-нибудь может мне помочь, извините, если код слишком плохой, как я уже говорил выше, я довольно новичок в React Native и Redux илидругие вещи.Спасибо!