я хочу показать данные в моем приложении, используя функцию карты но он ничего не отображает. я использую базу данных Redux и MySQL
я пытался поставить состояние по умолчанию для (свойство) это не сработало
это код компонента
import React, {Component} from 'react';
import {ActivityIndicator,ScrollView,ImageBackground,TouchableOpacity,StyleSheet, Text, View,Button,TextInput,Image} from 'react-native';
import {connect} from 'react-redux';
import {gethouse} from '../../store/actions/house_actions';
import {bindActionCreators} from 'redux';
class Property extends Component {
static navigationOptions = {
header:null
}
componentDidMount(){
this.props.dispatch(gethouse());
}
postsProperty =(house) =>(
house.property ?
house.property.map((item,i)=>(
<TouchableOpacity key = {i}>
<Text>hello</Text>
</TouchableOpacity>
))
:<ActivityIndicator/>
)
render() {
return (
<ScrollView style= {{backgroundColor:'#F0F0F0'}}>
{this.postsProperty(this.props.House)}
</ScrollView>
);
}
}
function mapstatetoprops(state){
console.info(state);
return{
House:state.House
}
}
export default connect(mapstatetoprops)(Property);
а это код действия
import HOUSE_P from '../types';
import axios from 'axios';
export function gethouse(){
const request =axios({
method:'GET',
url:'http://192.168.1.4:3000/property'
}).then(response =>{
console.info(response.data);
const property= response.data;
return property;
}).catch(e =>{
console.info(e);
return false;
})
return{
type: 'housing',
payload:request
}
}
это редуктор
import {HOUSE_P} from '../types'
export default function(state = {},action){
switch(action.type){
case HOUSE_P:
return {...state,porperty: action.payload}
default:
return state;
}
}
в отладчике я правильно получаю данные это мои данные https://i.ibb.co/SdPDsvX/Capture.png
если я прокомментирую house.property ? я получаю это сообщение об ошибке typeError Не удается прочитать карту свойств неопределенного Кстати, я показываю текст «привет», просто чтобы узнать, работает он или нет, он должен отображать привет 3 раза по количеству строк в моей базе данных.





Ваша функция gethouse выполняет асинхронный вызов, используя аксиомы, поэтому вы возвращаете ожидающее обещание в качестве полезной нагрузки.
Я не знаю, как выглядит ваш редуктор, так что это лучшее предположение.
Вместо этого вы можете попробовать сделать gethouse асинхронную функцию:
export async function gethouse(){
try {
const response = await axios({
method:'GET',
url:'http://192.168.1.4:3000/property'
})
console.info(response.data);
const property = response.data;
return {
type: 'housing',
payload: property
}
}
catch(e) {
console.info(e);
return false;
}
}
... а затем в вашем компоненте отправьте действие, когда gethouse разрешится:
componentDidMount(){
gethouse()
.then(action => this.props.dispatch(action));
}
Надеюсь, это поможет.
Должна ли ваша функция mapStateToProps возвращать { House: state.property }, а не { House: state.House }?
не получилось :\ . Я добавил приведенный выше код редуктора, если хотите, я попытался поместить этот console.warn(house.property), который показывает: undefined