#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
обновления. Чтобы избежать исключения, мы можем сначала проверить объект, прежде чем обращаться к его ключам-значениям.