Получение неопределенного результата от диспетчера - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь получить подробную информацию о фильме с использованием избыточного числа в компоненте реакции, но получаю его как неопределенный, вот мой код:

Обслуживание фильма:

import axios from 'axios';
import config from '../config/config';
export const FilmServices = {
    getAllFilms,
    searchFilm,
    getFilmByID
};
function getFilmByID(apiEndpoint){
    return axios.get(config.detailsUrl+apiEndpoint).then((response)=>{
        return response;
    }).catch((err)=>{
        console.log(err);
    })
}

Действие фильма:

import {FilmServices} from '../../services/FilmServices'
export function getFilmByID(idFilm) {
    return dispatch => {
        FilmServices.getFilmByID(idFilm)
            .then((response) => {
                if (response) {
                    dispatch(GET_FILMS_BY_ID(response));
                }
            })
    }
}
function GET_FILMS_BY_ID(response){
    return{
        type: "GET_FILMS_BY_ID",
        payload: response
    }
}

Пленка редуктор:

const initialState = { film: {}}
export function filmreducer(state = initialState, action) {
        case 'GET_FILMS_BY_ID':
            console.log(action.payload.data)
            return{
                ...state,
                film : action.payload.data
            };
        default:
            return state
    }
}

И детали компонента

import React, {Component} from 'react';
import connect from "react-redux/es/connect/connect";
import {getFilmByID} from "../store/actions/FilmActions";

class Details extends Component {



    componentDidMount() {
        const {idFilm} = this.props.match.params
        const {dispatch } = this.props;
        dispatch(getFilmByID(idFilm));
    }

    constructor(props) {
        super(props);
    }

    render() {
         const {film} = this.props.Film;

        return (
            <React.Fragment>
                {/*<h1>{this.idFilm}</h1>*/}
                <h1>{film.name}</h1>
            </React.Fragment>

        );
    }
}
const mapStateToProps = (state) =>{
    const { Film } = state.filmreducer;
    return {
        Film
    };
}
export default connect(
    mapStateToProps
)(Details);

Я получаю эту ошибку:

TypeError:Невозможно прочитать свойство 'film' с неопределенным значением

Но когда я регистрирую свои данные из filmAction, я правильно получаю ответ, но не в компоненте.

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 11 ноября 2019

Похоже, что это просто ситуация дел.

найти исправления ниже

...
render() {
         const { film } = this.props;
         ...
    }
}
const mapStateToProps = (state) =>{
    const { film } = state.filmreducer;
    return {
        film
    };
}
...