#reactjs #axios
#reactjs #axios
Вопрос:
Это моя общедоступная папка
public/
assets/
src/
items.json
index.html
src/
layout/
Items/ items.tsx - useEffect works fine
Overview/ Overview.tsx - useEffect does not work
index.tsx
package.json
Это мой обзор.tsx
import React, { useEffect, useState } from 'react'
import axios from 'axios';
function Overview(props: any): JSX.Element {
const [items, setItems] = useState([])
useEffect(() => {
axios.get('items.json')
.then(res => setItems(res.data))
.catch(err => console.log(err))
}, []);
return (
<div>
//JSX Goes here
</div>
);
}
Мой обзор.tsx имеет тот же код, что и моя другая страница, но это то, что я получаю в items.json в инструментах разработки
Заголовки
Request URL: http://localhost:3000/item/items.json
Request Method: GET
Status Code: 404 Not Found
Remote Address: 127.0.0.1:3000
Referrer Policy: no-referrer-when-downgrade
Предварительный просмотр
Cannot GET /item/items.json
Это мой Items.tsx в отдельной папке, и этот блок работает нормально
const [items, setItems] = useState([])
useEffect(() => {
axios.get('items.json')
.then(res => setItems(res.data))
.catch(err => console.log(err))
}, []);
Комментарии:
1. Вероятно, вы сейчас находитесь на
/item
странице. Вы должны выполнить запрос относительно вашего домена, например/items.json
.2. Я извлекаю данные из своей общедоступной папки, я предполагаю, что нужно поместить только
axios.get('items.json')
3. Сейчас HTTP не работает, если вы не добавляете
/
, вы делаете это относительно вашего текущего пути (которыйhttp://localhost:3000/item
)4. но мой Items.tsx работает очень хорошо, у них тот же код и даже каталог. как не удалось моему Overview.tsx получить те же данные.
5. Потому что ваш обзор, вероятно, находится на вашей корневой странице, а страница элементов — нет
Ответ №1:
Просто измените свою функцию axios на это:
axios.get('/items.json')
.then(res => setItems(res.data))
.catch(err => console.log(err))
поскольку вы используете относительный путь, он будет извлекаться из /currentPath/items.json
но если вы используете /items.json
, axios извлекает ваш файл json из root/items.json