#javascript #html #node.js #reactjs #express
#язык JavaScript #HTML #node.js #реагирует на #экспресс
Вопрос:
В приведенном ниже коде я пытаюсь использовать axios, запрос на получение от await axios.get('/products/api')
работает только я могу видеть данные в консоли, но для await axios.get('/users/api')
неопределенного возвращается на консоль, но когда я пытаюсь получить запрос через почтальона, я могу получить результаты .Я застрял здесь.
«‘ const [userdata, setuserdata] = useState([]); const [продукты, setproducts] = useState([]);
useEffect(() =gt; { const fetchUserData = async () =gt; { const { users } = await axios.get('/users/api') setuserdata(users); const { data } = await axios.get('/products/api') setproducts(data); } fetchUserData(); }, []); console.log(products) console.log(userdata)
Комментарии:
1. вместо «const {пользователи}» попробуйте «const пользователи» и проверьте console.log(пользователи). возможно, пользователи не возвращаются с сервера или возвращаются с другим именем
Ответ №1:
Обновите свой код до этого:
const users = await axios.get('/users/api') setuserdata(users.data); const products = await axios.get('/products/api') setproducts(products.data);
Ответ №2:
Прежде чем вы разрушите свою консоль ответов.запишите ответ в журнал. Я имею в виду, попробуй:
const users = await axios.get('/users/api'); console.log(users)
Возможно, пользователи не являются частью объекта данных axios по умолчанию. Если вы все еще не определились, вам нужно дважды проверить, возвращает ли ваш api ответ (ПОЧТАЛЬОН).
Ответ №3:
Поверьте, то, что вы пытаетесь сделать, это:
const [userdata, setUserData] = useState([]) const [products, setProducts] = useState([]) useEffect(() =gt; { const fetchUserData = async () =gt; { const users = await axios.get('/users/api') setUserData([...userdata, users]) const data = await axios.get('/products/api') setProducts([...products, data]) } fetchUserData() }, [userdata, products]) console.log(products) console.log(userdata)
Если вы просто используете []
useEffect
его, он будет запускаться только один раз в начале, но для каждой памяти React выдаст предупреждение для products
and userdata
.
Думаю, что они также лучше работали бы сами по себе useEffect
. Вы даже можете сделать свой код чище, создав функцию и передав путь к функции. Нравится:
const getData = async (path) =gt; await axios.get(`/${path}/api`)