【发布时间】:2020-04-12 11:28:14
【问题描述】:
我对做出反应还很陌生,所以我确定我错过了一些非常简单或离题的东西。我正在尝试完成一个简单的 axios api 获取并将响应设置为状态。我能够在控制台日志中看到数据,但是当我尝试将其设置为状态时似乎没有发生任何事情。在各种博客的帮助下,我尝试了 useState、useEffect、useReducer 方法,但我看不到输出,所以我绝对没有做对。
编辑:我试图在页面加载时执行此操作,而不是在点击事件时执行此操作。
我能够在反应 (https://reactjs.org/docs/hooks-state.html) 上获得可用的反例,以便在没有任何问题的情况下工作。我正在关注几个博客中的混合示例,但无法看到结果。
https://www.andreasreiterer.at/rest-api-react-hooks/
最终我想将 api 中的数据合并到 Material table ui中
任何有用的见解将不胜感激。在过去的两天里,我一直坚持这些。
function LandingPage = () => {
const [rows, setRows] = useState([]);
useEffect(() => {
console.log("ent useeffect")
const fetchData = async () => {
const result = await axios(
window.location.origin + "/api/MESampleData",
);
console.log("before if")
if(result){console.log(result)}
console.log("before setrows")
setRows(result.data);
};
fetchData();
}, []);
return (
<div className="section">
{<h6>It should render</h6>}
<ul>
{rows.map(row =>
<li>{row.item1}</li>
)}
</ul>
</div>)
}
export default LandingPage;
【问题讨论】:
-
result具体是什么? -
您好 - result 是来自 Axios fetch 的响应,result.data 应该是一个记录数组。
-
我问的是实际情况,而不是预期的情况——例如,显示结果。
-
如果有帮助,请查看示例输出屏幕打印。
-
啊,废话。我明白你现在的意思了。我没有抓住正确的数据元素并将其放入 setRows 对象中。我刚刚看到了结果数组,并认为就是这样。让我修复并再次部署。
标签: javascript reactjs axios fetch