Как описывает заголовок, я не могу получить доступ к значениям объекта ниже.
1: {id: 38, user_id: 3, review_id: 1, created_at: "2020-04-11T04:12:14.569Z", updated_at: "2020-04-11T04:12:14.569Z"}
2: {id: 24, user_id: 3, review_id: 2, created_at: "2020-04-11T03:25:16.589Z", updated_at: "2020-04-11T03:25:16.589Z"}
3: {id: 20, user_id: 3, review_id: 3, created_at: "2020-04-09T12:07:34.669Z", updated_at: "2020-04-09T12:07:34.669Z"}
Этот объект хранится в likes
, а ключи - в reviewId
. Я подтвердил, что эти две переменные успешно сохранены с помощью инструмента chrome dev. проверка объекта проверка reviewId
Я пробовал следующие способы доступа к значениям, ни одно из которых не сработало:
if (likes) {
console.log('reviewId is now ', reviewId);
console.log('like of this reviewId is now ', likes['1']);
console.log('like of this reviewId is now ', likes[`${reviewId}`]);
console.log('like of this reviewId is now ', likes[reviewId]);
console.log('like of this reviewId is now ', likes[String(reviewId)]);
console.log('like of this reviewId is now ', likes.reviewId);
}
Если я понимаю правильно, ключи с целым числом будут преобразованы в строку, поэтому я должен иметь доступ к значениям по крайней мере с likes['1']
. Наверное, там может быть какая-то другая проблема, кроме того, как мне получить доступ?
Дайте мне знать, если у вас есть предложения. Спасибо.
[Дополнения] Пожалуйста, обратитесь к следующим кодам, которые могут быть связаны с этой проблемой. Я использую Redux + Hooks.
<./actions/like.js>
import axios from 'axios';
import * as actionTypes from './actionTypes';
export const setLike = likes => {
return {
type: actionTypes.SET_LIKE,
likes: likes,
};
};
export const fetchLike = (likes, userId, reviewId) => {
return dispatch => {
const url = `http://localhost:3001/users/${userId}/reviews/${reviewId}/likes/1`;
axios
.get(url)
.then(response => {
likes[reviewId] = response.data;
dispatch(setLike(likes));
})
.catch(error => {
console.log(error);
});
}
};
<./reducer/like.js>
import * as actionTypes from '../actions/actionTypes';
import { updateObject } from './utility';
const initialState = {
likes: {},
};
const setLike = (state, action) => {
return updateObject(state, {
likes: action.likes,
});
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case actionTypes.SET_LIKE:
return setLike(state, action);
default:
return state;
}
};
Демо:
const likes = {
1: {
id: 38,
user_id: 3,
review_id: 1,
created_at: "2020-04-11T04:12:14.569Z",
updated_at: "2020-04-11T04:12:14.569Z"
}
};
const reviewId = 1;
console.log('like of this reviewId is now ', likes['1']);
console.log('like of this reviewId is now ', likes[`${reviewId}`]);
console.log('like of this reviewId is now ', likes[reviewId]);
console.log('like of this reviewId is now ', likes[String(reviewId)]);
console.log('like of this reviewId is now ', likes.reviewId);
.as-console-wrapper {max-height: 100% !important;top: 0;}