Привет, я пишу код, чтобы получить JSON с топором ios в пользовательских хуках и вернуть значение, но я не могу получить доступ к свойству объекта, даже если оно было там.
Я был пытаясь получить доступ как item.title
или item["title"]
и даже JSON.parse()
, но parse()
вернул ошибку перекрестного источника.
customHooks. js
import { useState, useEffect } from "react";
import axios from "axios";
const GetPost = (id) => {
const [post, setPost] = useState();
useEffect(() => {
axios.get(`http://localhost:8000/post/${id}`).then((res) => setPost(res));
}, []);
return post;
};
export default GetPost;
Функция, где вызывается ловушка и я хочу получить доступ к объекту:
import React from "react";
import getPost from "../customHooks/GetPost";
import { Jumbotron, Container } from "react-bootstrap";
const PostDetail = (props) => {
const item = getPost(props.match.params.id);
console.log(item); // i can access the object
console.log(item.title); //TypeError: Cannot read property 'title' of undefined
return (
<Jumbotron fluid>
<Container>
{/* <h1>{item.title}</h1>
<p>{item.description}</p> */}
</Container>
</Jumbotron>
);
};
export default PostDetail;
Фактический ответ от сервера http://localhost: 8000 / post / post_5e9cbf07b44c7 :
{
"message": "success",
"item": {
"post_id": "post_5e9cbf07b44c7",
"title": "Asperiores.",
"description": "Porro iure aliquam laborum veniam quis vel. At itaque voluptas voluptas natus eligendi aut facilis.",
"content": "lorem ipsum",
"img_url": "https://lorempixel.com/100/100/cats/?61693",
"created_by": "user_5e9cbf07b48fc",
"created_at": "2020-04-19 21:13:43",
"updated_at": "2020-04-19 21:13:43"
}
}
Значение console.log(item)
в PostDetail. js это:
{
"data": {
"message": "success",
"item": {
"post_id": "post_5e9cbf07b44c7",
"title": "Asperiores.",
"description": "Porro iure aliquam laborum veniam quis vel. At itaque voluptas voluptas natus eligendi aut facilis.",
"content": "lorem ipsum.",
"img_url": "https://lorempixel.com/100/100/cats/?61693",
"created_by": "user_5e9cbf07b48fc",
"created_at": "2020-04-19 21:13:43",
"updated_at": "2020-04-19 21:13:43"
}
},
"status": 200,
"statusText": "OK",
"headers": {
"cache-control": "no-cache, private",
"content-type": "application/json"
},
"config": {
"url": "http://localhost:8000/post/post_5e9cbf07b44c7",
"method": "get",
"headers": {
"Accept": "application/json, text/plain, */*"
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1
},
"request": {}
}
заранее спасибо:)