【发布时间】:2022-01-22 11:59:06
【问题描述】:
目前我一直在使用 axios 和 React 中的 useEffect Hook 从 API 中提取数据。这是通过让用户在代码字段中输入一个值来完成的,该值将用于向 API 发出请求。但是,在提取数据并将其显示在页面上时,我遇到了问题。通常,我会使用 data.map() 将数组数据映射到不同的字段,但是从这个 API 中提取时,我得到了一个项目对象,我在映射到字段以在应用程序上显示时遇到问题。此外,我还注意到 useEffect 钩子在控制台中不断被调用,我不知道如何让它只被调用一次。如果有人可以帮助解决这些问题中的任何一个,将不胜感激!
home.js
import React, { useState, useEffect } from 'react';
import axios from "axios";
import './Home.css'; // Import styling
function Home() {
const [data, setData] = useState([])
const [state, setState] = useState({
code: ""
})
const handleChange = e => setState(prevState => ({ ...prevState, [e.target.name]: e.target.value }))
useEffect(() => {
axios.get(baseURL)
.then((response) => {
setData(response.data);
console.log(data)
});
});
return (
<div className="form-container">
<h1>axios-test</h1>
<div className="form-group">
<label>Code</label>
<input type="text" className="form-control" name="code" value={state.code} onChange={handleChange}/>
</div>
<div className="form-group">
<label>Lead</label>
<input type="text" className="form-control" name="Lead" value={data.map(data => data.project.primaryLeaderName)} onChange={handleChange} disabled/>
</div>
</div>
)
}
export default Home;
【问题讨论】:
标签: reactjs object react-hooks axios mapping