- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一个 React 组件来渲染评级并用星星可视化它。但是我不得不为此使用 dangerouslySetInnerHTML。我怎样才能用更好的代码风格重写组件而不用 dangerouslySetInnerHTML?感谢您的帮助。
export default class BookRating extends React.Component {
renderStars = () => {
let result = '';
for(let i=1; i<=5; i++) {
this.props.rating >= i
? result += '<div class="fa fa-star checked"></div>'
: result += '<div class="fa fa-star"></div>'
}
return result;
}
render () {
return (
<div className="rating" dangerouslySetInnerHTML={{ __html: this.renderStars() }} />
);
}
}
最佳答案
您可以使用数组而不是字符串来呈现多个元素:
export default class BookRating extends React.Component {
renderStars = () => {
let result = [];
for(let i=1; i<=5; i++) {
this.props.rating >= i
? result.push(<div key={i} class="fa fa-star checked"></div>)
: result.push(<div key={i} class="fa fa-star"></div>'
}
return result;
}
render () {
return (
<div className="rating">{this.renderStars()}</div>
);
}
}
正如 Quentin 和 Emile 所指出的,您可以在一行中编写此函数,如下所示:
renderStars = () => Array(5).fill(0).map(_, i => <div className={`fa fa-star${this.props.rating > i ? ' checked' : ''}`}/>)
关于javascript - 如何避免危险的SetInnerHTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56855142/
该字符串:...从服务器端接收,需要设置为元素的内部 HTML。 当我使用Element#setInnerHTML时该字符串转换为 ... ,即将 HTML 实体转义为其表示的字符。 如何在不进行实体
我正在使用 React 创建一个 SPA 来搜索数据并显示结果。每个结果都遵循以下模型 { "title": "A Title", "body": " <li>escaped ht
我遇到了以下问题: 在模组可以点击“复制”之前,它不是。我搜索了问题,找到了“解决方案”,应用了“解决方案”,但它们没有用。所以问题可能是'为什么我的'解决方案'不起作用?或者问题可能是“实际的解决方
我正在使用 dangerouslySetInnerHtml 将链接插入复合 react 组件。 render 方法调用方法 rowValue 检查组件的状态并返回要呈现的适当标记。 这是 rowVal
我在 GWT 上使用此元素成功地在我的网络应用程序上添加和显示 HTML 代码。 但是,当我尝试添加“Facebook like button”代码时,它根本没有显示: Element adConta
有人知道如何在 React 中将此 prop 属性获取到 stringToHTML 吗?提前致谢! var Video = React.createClass({ getDefaultProps: f
我有我的元素: dangerouslySetInnerHTML: { __html: this.props.html.map(React.renderToStaticMarkup).join('')
我有一系列存储在 MD 文件中的博客文章,其中一些包含脚本标签形式的多个 Gist 嵌入。 MD 内容通过危险的SetInnerHTML 呈现到页面,当页面被直接导航到时一切正常。但是,当使用应用程序
我是一名优秀的程序员,十分优秀!