javascript - 在 jsx 对象内插入 html 标签以进行映射
问题描述
我在一个带有一些 HTML 标签的对象中有一个字符串,我想使用 map 函数打印该对象内的值。
const tableBody = [
{
date: '02/08/2019',
item: 'Renewed your <strong>current Team Plan</strong>'
},
{
date: '05/09/2019',
item: 'Renewed your current Team Plan 2'
},
{
date: '15/10/2019',
item: 'Renewed and upgraded to the <strong> Business Plan </strong> with 3 new members'
}
];
<table>
{tableBody.map(tableBody => (
<tr>
<td>{tableBody.date}</td>
<td>{tableBody.item}</td>
</tr>
))}
</table>
当我运行此代码时,我希望<strong>
字符串中的该标记编译为 HTML 元素,而不是呈现为纯文本。那么有什么方法可以实现这些家伙吗?
解决方案
您应该渲染ReactElement
或使用dangerouslySetInnerHTML
const tableBody = [
{
date: '02/08/2019',
item: (
// v <React.Fragment>
<>
Renewed your <strong>current Team Plan</strong>
</>
)
}
];
export default function App() {
return (
<FlexBox>
<table>
// v Notice the shadowing in OP's code
{tableBody.map(tableBody => (
<tr>
<td>{tableBody.date}</td>
// v ReactElement
<td>{tableBody.item}</td>
</tr>
))}
</table>
// v `dangerouslySetInnerHTML` example
<table>
<tr>
<td>{'02/08/2019'}</td>
<td
dangerouslySetInnerHTML={{
// v A string, exposed to attacks, not recommended
__html: 'Renewed your <strong>current Team Plan</strong>'
}}
/>
</tr>
</table>
</FlexBox>
);
}
操场:
推荐阅读
- python - 如何在 Python 中可视化隔离森林算法?
- reactjs - 无法通过 react-router 使用 props.history.push 进行重定向
- laravel - SQLSTATE [42S22]:未找到列:1054 未知列
- encryption - 您可以使用 AES 指定加密字符串的输出长度吗?
- java - 如何按降序打印HashMap值,但是如果两个或多个值相等,则按键升序打印?(JAVA)
- .net-core - Dotnet Core - Hangfire - 依赖注入和 HTTPClient
- apache-nifi - 从以前的处理器 NiFi 获取 id
- java - 无法让 2 个客户端监听一个 UDP 服务器
- python-3.x - 检查程序是否安装了 Python
- ffmpeg - 如何使用 Windows 构建用于商业用途的 FFmpeg 可执行文件?