как получить все данные из запроса

#reactjs #fetch

#reactjs #выборка

Вопрос:

Я получаю данные с сервера и пытаюсь получить «имя» от «одного» объекта и получаю неопределенную ошибку. Если убрать замену в запросе, строка «fetchData (response.data)» на «fetchData (response.data.one)» и в селекторе «return state.one.name ; » для»возврата state.name ;» результат возвращает данные. Что вызывает эту ошибку? Запрос и ссылка на одни и те же объекты.

запрос

 export function fetchData (data) {
    return {
        type: "GET_DATA_REQUEST",
        payload: data
    }
}

export function fetchDataRequest(url) {
    return(dispatch)=> {
        fetch(url)
            .then(response => {
                    if (!response.ok) {
                        throw new Error(response.statusText);
                    }
                    return response;
                }
            )
            .then(response => response.json())
            .then(response => dispatch(fetchData(response.data)))
    }
}
 

селектор

 export const getRequestCity = (state) => {
    return state.one.name;
}

 

Ответ №1:

Вы можете проверить, присутствует ли объект one , прежде чем обращаться к нему, как показано ниже —

 export const getRequestCity = (state) => {
    if (state.one) {
        return state.one.name;      
    }
}
 

Комментарии:

1. спасибо, помогло. Можете ли вы сказать мне, почему ошибка возникает в первом варианте?

2. Возможно getRequestCity , метод вызывался до state обновления. Чтобы избежать исключения, мы можем сначала проверить объект, прежде чем обращаться к его ключам-значениям.