如何在没有按钮的情况下一次调用 Axios 响应
How do I call an Axios response once and without a button
我是 React 和 Axios 的新手,我创建了一个 get 请求,我可以用一个按钮调用它一次,但是我不想要这个按钮,而是希望在页面 loads/with 页面,以便用户可以立即看到它。但是当调用我的函数时,一旦它被连续调用并使网络浏览器崩溃,我不明白为什么会这样,我用谷歌搜索但找不到任何东西。这是获取 运行.
的代码
kitchen.js
import React from 'react';
import { Container } from 'react-bootstrap';
// import Axios from 'axios';
import { Link } from 'react-router-dom';
import GetFood from './getFood';
export default function Kitchen() {
return(
<Container>
<div>
<h1>This is the kitchen portal</h1>
<Link to='/gettingfood'><button>Get Food</button></Link>
<Link to="/addingfood"><button>Add food</button></Link>
<Link to="/deletefood"><button>Delete Food</button></Link>
</div>
<GetFood/>
</Container>
);
}
GetFood.js
import React, { useState } from 'react';
import Axios from 'axios';
export default function GetFood() {
const [responseData, setResponseData] = useState([])
// fetches data
async function fetchData(){
await Axios.get("http://localhost:3001/getfood").then((response)=>{
setResponseData(response.data);
console.log(response.data);
alert("Information received!")
})
.catch((error) => {
console.log(error)
})
}
fetchData();
return (
<div>
<button onClick={fetchData}>Get</button>
{responseData.map((val,key)=>{
return (
<div>
<div id="data">
<p>Item:{val.item}</p>
<p>Price:{val.price}</p>
</div>
</div>
)
})}
</div>
)
}
在 React 中,功能组件在每次渲染时都会被调用。
要产生副作用,例如从外部来源请求数据,您应该使用 useEffect
挂钩。
这个钩子接受一个要执行的函数和一个依赖数组,它定义了提供的函数何时被调用。
如果您指定一个空数组,则该函数只会在第一个渲染周期中被调用。
如果您指定任何变量,则在第一个渲染周期 和 任何指定变量更改时调用该函数。
这应该代替您对 fetchData() 的调用:
useEffect(() => {
fetchData();
}, []);
我是 React 和 Axios 的新手,我创建了一个 get 请求,我可以用一个按钮调用它一次,但是我不想要这个按钮,而是希望在页面 loads/with 页面,以便用户可以立即看到它。但是当调用我的函数时,一旦它被连续调用并使网络浏览器崩溃,我不明白为什么会这样,我用谷歌搜索但找不到任何东西。这是获取 运行.
的代码kitchen.js
import React from 'react';
import { Container } from 'react-bootstrap';
// import Axios from 'axios';
import { Link } from 'react-router-dom';
import GetFood from './getFood';
export default function Kitchen() {
return(
<Container>
<div>
<h1>This is the kitchen portal</h1>
<Link to='/gettingfood'><button>Get Food</button></Link>
<Link to="/addingfood"><button>Add food</button></Link>
<Link to="/deletefood"><button>Delete Food</button></Link>
</div>
<GetFood/>
</Container>
);
}
GetFood.js
import React, { useState } from 'react';
import Axios from 'axios';
export default function GetFood() {
const [responseData, setResponseData] = useState([])
// fetches data
async function fetchData(){
await Axios.get("http://localhost:3001/getfood").then((response)=>{
setResponseData(response.data);
console.log(response.data);
alert("Information received!")
})
.catch((error) => {
console.log(error)
})
}
fetchData();
return (
<div>
<button onClick={fetchData}>Get</button>
{responseData.map((val,key)=>{
return (
<div>
<div id="data">
<p>Item:{val.item}</p>
<p>Price:{val.price}</p>
</div>
</div>
)
})}
</div>
)
}
在 React 中,功能组件在每次渲染时都会被调用。
要产生副作用,例如从外部来源请求数据,您应该使用 useEffect
挂钩。
这个钩子接受一个要执行的函数和一个依赖数组,它定义了提供的函数何时被调用。 如果您指定一个空数组,则该函数只会在第一个渲染周期中被调用。 如果您指定任何变量,则在第一个渲染周期 和 任何指定变量更改时调用该函数。
这应该代替您对 fetchData() 的调用:
useEffect(() => {
fetchData();
}, []);