reactjs - 基于 API 返回的 React 切换按钮
问题描述
我目前正在开发一个 React 应用程序。
正如您在以下代码中看到的,有两个按钮。如果用户尚未创建请求(默认),我想显示灰色按钮。如果用户创建了请求,则该按钮应为绿色。
问题: 主要问题是,映射函数 (API) 没有为“无请求”返回任何值,因此我无法识别“无请求”。这意味着 .isEmpty,.length, .indexOf,... 以及“if-else”都不起作用,因为没有什么可以验证的。
const greenButton = (
<Button color="green" onClick={e => DeleteRequest(e, rest.id)}>Request</Button>
);
const greyButton = (
<Button color="grey" onClick={e => CreateRequest(e, props.reservationID)}>Request</Button>
);
return (
<div>
{greyButton}
{requests.map((rest, i) => (
<div key={i}>
{rest.requester === username
? <div>{greenButton}{rest.requester} <i
aria-hidden="true"
className="delete icon"
onClick={e => DeleteRequest(e, rest.id)} />
</div> : <div />}
</div>
))}
</div>
);
用户界面中的结果:
有任何想法吗?(如果您需要更多信息,我很乐意提供更多详细信息)
解决方案
使用三元requests
作为已定义/真实对象并具有真实长度属性。在真分支映射请求,假分支中的灰色按钮。这包括requests
最初(或从 API 返回)undefined
或空数组[]
。
return (
<div>
{requests && requests.length ? requests.map((rest, i) => (
<div key={i}>
{rest.requester === username
? <div>{greenButton}{rest.requester} <i
aria-hidden="true"
className="delete icon"
onClick={e => DeleteRequest(e, rest.id)} />
</div> : <div />}
</div>
)) : (
{greyButton}
)}
</div>
);
推荐阅读
- javascript - 当满足所有情况条件时,javascript中的switch如何工作
- sql - Oracle SQL:任何 + 为空
- dialogflow-es - 如何保持对话框流 df-messenger 的初始语音气泡一直关闭?
- r - 如何使用代码将魔法图像类对象编写为 png 文件?
- python - 哈佛在线 CS50 - 学位
- css - 查询交互式报告失败并突出显示行 css 条件
- c++ - 如何从文件中读取数据并将文件中的名称存储在一个向量中,并将文件中的分数存储在另一个向量中?
- python - 文本文件读取偏移与python中seek和tell定义的块不一致
- swift - 如何在 Xcode 中使用 Swift 链接多个 collada 动画?
- javascript - Django Rest Framework 和 React 前端:如何防止未经授权的用户在获取图像 URL 时查看私人图像?