Не может прочитать карту свойств undrfined

я хочу показать данные в моем приложении, используя функцию карты но он ничего не отображает. я использую базу данных 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 раза по количеству строк в моей базе данных.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша функция 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));
}

Надеюсь, это поможет.

не получилось :\ . Я добавил приведенный выше код редуктора, если хотите, я попытался поместить этот console.warn(house.property), который показывает: undefined

amjad alhaffar 31.07.2019 16:49

Должна ли ваша функция mapStateToProps возвращать { House: state.property }, а не { House: state.House }?

Steve Holgado 31.07.2019 17:20

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