reactjs - 如何在 React 中设置初始状态以在按需获取数据之前不显示任何内容?
问题描述
我想显示从 API 获取的数据。API url 基于用户输入。一旦用户输入并单击提交,它应该显示获取的数据。但是在用户点击提交之前,它应该什么都不显示。
我遇到的问题是,当在 html 的列表中呈现用户的数据时,在用户输入任何内容之前,map 函数在 property{} 上不存在。我应该将什么设置为初始状态?
转换后的数据工作正常。console.log(transformedData)
印刷
我想将每个标题显示为列表。示例用户输入可以是0x147412d494731cbb91dbb5d7019464a536de04dc
import { useState } from "react";
// example user: 0x147412d494731cbb91dbb5d7019464a536de04dc
function App() {
const [data, setData] = useState({});
const [enteredWallet, setEnteredWallet] = useState("");
const [owner, setOwner] = useState("");
const walletChangeHandler = (event) => {
setEnteredWallet(event.target.value);
};
const submittedHandler = (event) => {
event.preventDefault();
setOwner(enteredWallet);
fetchNFTHandler();
};
function fetchNFTHandler() {
fetch(
`https://api.opensea.io/api/v1/assets?owner=${owner}&order_direction=desc&offset=0&limit=10`
)
.then((res) => {
return res.json();
})
.then((data) => {
const transformedData = data.assets.map((element, index) => {
return {
title: element.name,
id: index,
};
});
setData(transformedData);
console.log(transformedData);
});
}
return (
<div className="App">
<header className="App-header">
<h3>Show me assets in this wallet</h3>
<form onSubmit={submittedHandler}>
<input
placeholder="wallet address"
value={enteredWallet}
onChange={walletChangeHandler}
/>
<button>Submit</button>
</form>
<div>
console.log(data)
{/* {data.map((element) => (<li key={element.id}>
{element.title}</li>))}
*/}.
{/* here is the problem. before user input, this map function doesn't work */}
</div>
</header>
</div>
);
}
export default App;
解决方案
推荐阅读
- javascript - 如何通过csjs触发驻留在对话框中的xe:namepicker?
- windows - 权限被拒绝:稍后重试 ssh 中的错误
- javascript - 如何在ar-js中将点击事件添加到a-image
- javascript - 动态生成的 textarea (JQuery) 以适应初始内容大小
- input - SAS:这个声明有什么作用?
- javascript - SyntaxError: Unexpected token ... (webpack, react)
- google-chrome - 当 Chrome 窗口仍然打开时,Dotnet Core 应用程序认为它仍在运行
- javascript - 路由,第一部分丢失
- html - 将子 div 平等划分为父 div
- scala - 斯卡拉合并排序