javascript - React 组件:需要格式化来自 API 响应的地址并将其传递给具有复制到剪贴板功能的组件
问题描述
我有一个反应组件,它显示一个地址,旁边有一个复制到剪贴板图标。
返回的地址有 5 个元素:address1、address2、city、state 和 zip
当我在前端显示元素时,我可以根据它们是否存在有条件地渲染它们。但是我不确定如何将它传递给我的 CopyButton。
我开始编写格式化程序,但在传递格式化地址时遇到了问题。
这是我当前的格式化程序代码以及显示的字符串和 CopyButton 组件以供参考:
Formatter
const formatAddress = (addressLine1: string, addressLine2: string, city: string, state: string, zip5: string ) => {
let formattedAddress = ''
address2 ? formattedAddress = `${addressLine1} ${addressLine2}, ${city}, ${state} ${zip5}` : formattedAddress = `${addressLine1}, ${city}, ${state} ${zip5}`
return formattedAddress
}
<p> element with address and CopyButton
{address1
? (
<p data-testid="address">
{address1}
{address2 && `, ${address2}`}
{city && `, ${city}`}
{state && `, ${state}`}
{zip && ` ${zip.substring(0, 5)}`}
{formatAddress(address1, address2, city, state, zip)}
<ButtonCopyText
a11yText="Copy Address"
textToCopy={formattedAddress}
/>
</p>
) : (
<p data-testid="no-address">--</p>
)
}
解决方案
let formattedAddress = ''
address2 ? formattedAddress = `${addressLine1} ${addressLine2}, ${city}, ${state} ${zip5}` : formattedAddress = `${addressLine1}, ${city}, ${state} ${zip5}`
可能是这个
const formattedAddress =
`${addressLine1}${addressLine2 ? ` ${addressLine2}` : ''}, ${city}, ${state} ${zip5}`.trim();
此外,您永远不会定义formattedAddress
何时将其用作传递给<ButtonCopyText />
组件的道具。你可以在 prop 赋值中调用函数,或者将函数的返回值赋值给 JSX 之外的某个变量。
推荐阅读
- python - 具有张量流数据集的序列模型
- kubernetes - 污点和容忍
- javascript - JavaScript 元素创建差异导致 jquery.ui.autocomplete 元素未定义错误
- python - 使用递归的字符串列表的笛卡尔积
- python - 使用服务帐户凭据导出 GDrive 失败并出现 404
- c# - 如何验证 Azure AD 访问的 appid
- sql - 在时间段内在 oracle 中生成有间隙的日期
- sql - 根据 PostgreSQL 中的最近值组合多行
- python - 如果数据框为空,熊猫应用函数(UDF)无法返回多个值
- microsoft-graph-api - 如何从群组通话中转移参与者