gpt4 book ai didi

javascript - 在 jsx 对象中插入 html 标签以进行映射

转载 作者:行者123 更新时间:2023-11-30 19:16:20 26 4
gpt4 key购买 nike

我在一个对象中有一个字符串,其中包含一些 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>
);
}

Playground :

Edit Q-57955460-ReactElementRender

关于javascript - 在 jsx 对象中插入 html 标签以进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com