javascript - 在 React 中如何将标准 html 作为组件传递?
问题描述
我想编写一个接受包装器组件的 HOC,但想像这样传递内部 html 的标准元素..
type TextLike = string | {type,content}
const TextLikeRender = ({value,component:Wrapper})=>{
return (
value.type==='html'?
<Wrapper dangerouslySetInnerHTML={{__html: value.content}}/>:
<Wrapper>{value}</Wrapper>;
)
}
// use like this
<TextLikeRender value={{type:'html',content:'This is <br/> Html'}} component={/* how to reference h1 element */XXXX.h1} />
我想h1
作为 TextLikeRender 的组件传递,如何引用 h1?
解决方案
一种可能的解决方案是使用React.createElement
inside TextLikeRender
。这样您就可以将组件作为字符串传递。
export const TextLikeRender = ({ value, component:Wrapper })=> {
return value && value.type==='html' ?
React.createElement (Wrapper, { dangerouslySetInnerHTML: {__html: value.content} }) :
React.createElement (Wrapper, {}, value && value.content)
}
用法
<TextLikeRender value={{type:'html',content:'This is <br/> Html'}} component='h1' />
推荐阅读
- scala - Scalafiddle中的Simulacrum:宏扩展期间的异常
- scala - 使用scala的spark数据帧操作行和列级别
- java - GSON 阵列保持为空
- image - 了解 Keras 的 ImageDataGenerator 中的“follow_links”参数?
- java - 无法从android中的QR码中提取数据
- xpath - 跨度后访问文本的 XPath
- javascript - 以这种方式覆盖 React 状态数组是否很好?
- c# - 查找存在于另一个列表中的列表项
- php - Laravel Query Builder 将多个参数作为逗号分隔列表传递不起作用
- sql - 访问更新查询:查询不包含指定表达式作为聚合函数的一部分