为什么下拉值不使用打字稿?
Why Dropdown values not coming using typescript?
尝试将数据绑定到下拉列表,但未绑定任何内容,下拉列表显示未选择任何内容。
function Drop() {
axios.get('/api/v1/users/')
.then(function (response) {
global_num = response.data;
// console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
let lst = [];
for (let i in global_num) {
lst.push(global_num[i]['username']);
}
return (
<select style={{ width : "300px" , height: "40px", margin:"20px", fontSize:"18px"}} name="res">
{lst?.map((list) => (
<option value={list}> {list} </option>
))}
</select>
);
}
API 结果,其中用户名用于显示为下拉选项
Response from API:
[
{
"id": 1,
"username": "hanwat007@gmail.com",
}
]
React 组件同步呈现,这意味着您的 UI 在您收到 HTTP 响应之前呈现,并且在响应稍后到达时不会更新。这意味着您的 for (let i in global_num) { ...
代码在 响应到达之前 运行。
相反,您的组件应该:
- 使用
useState
在您的组件中创建一些状态来存储响应数据
- 当您的组件首次呈现时开始发送请求,
useEffect
- 在未设置状态的情况下呈现时,显示某种加载消息或微调器
- 当响应到达时(在您的
then
回调中)使用响应数据调用 setState
- 这将更新组件的状态并触发 re-render
- 当组件呈现并且状态可用时,然后您可以使用它并显示所有列表项。
尝试将数据绑定到下拉列表,但未绑定任何内容,下拉列表显示未选择任何内容。
function Drop() {
axios.get('/api/v1/users/')
.then(function (response) {
global_num = response.data;
// console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
let lst = [];
for (let i in global_num) {
lst.push(global_num[i]['username']);
}
return (
<select style={{ width : "300px" , height: "40px", margin:"20px", fontSize:"18px"}} name="res">
{lst?.map((list) => (
<option value={list}> {list} </option>
))}
</select>
);
}
API 结果,其中用户名用于显示为下拉选项
Response from API:
[
{
"id": 1,
"username": "hanwat007@gmail.com",
}
]
React 组件同步呈现,这意味着您的 UI 在您收到 HTTP 响应之前呈现,并且在响应稍后到达时不会更新。这意味着您的 for (let i in global_num) { ...
代码在 响应到达之前 运行。
相反,您的组件应该:
- 使用
useState
在您的组件中创建一些状态来存储响应数据
- 当您的组件首次呈现时开始发送请求,
useEffect
- 在未设置状态的情况下呈现时,显示某种加载消息或微调器
- 当响应到达时(在您的
then
回调中)使用响应数据调用setState
- 这将更新组件的状态并触发 re-render - 当组件呈现并且状态可用时,然后您可以使用它并显示所有列表项。