reactjs - React-Bootstrap:如果文本存储在状态变量中,为什么会以不同的方式呈现 Alert 组件的文本?
问题描述
我正在使用针对 Bootstrap v3 的 react-bootstrap,并且我正在使用 Alert 组件向用户显示消息。
此外,我需要显示多行消息。对于换行符,我使用 <br />。
如果我“硬编码” Alert 组件内的多行文本,则该组件按预期工作,显示多行。
但是,如果我使用属于父组件状态的变量,它就不起作用。
这种行为的原因是什么?
class MyAlert extends React.Component {
constructor(props) {
super(props);
this.state = {
message: "Hello <br /> world! <br /> This line ..."
};
}
render() {
return (
<div>
<Alert bsStyle="warning">{this.state.message}</Alert>
<Alert bsStyle="info">
"Hello <br /> world! <br /> This line ..."
</Alert>
</div>
);
}
} //MyAlert
这里的输出:
解决方案
bsStyle 设置为 info的第二个<Alert>
是将其呈现为 HTML 而不是字符串。请注意,引号正在显示。所以,它不是一个字符串。而,this.state.message
是一个字符串,因此它不会将其解释<br />
为换行符。希望这是有道理的。
这是一个解决方法。
<Alert bsStyle="warning">
<p dangerouslySetInnerHTML={{ __html: this.state.message }}></p>
</Alert>
希望这可以帮助。
推荐阅读
- c++ - 如何使用c ++中的共享指针通过istream传递本地streambuf
- angular - 使用依赖注入将函数从一个组件传递到另一个组件
- spring-security - 如何即时刷新反应式 Spring Security 应用程序
- javascript - 在 Reactjs 中使用 CSSTransition 和 Group Transition 时没有动画
- javascript - 对 maps.google.com 进行大量(可能约为 100000)的 api 调用会导致 getaddrinfo ENOTFOUND 错误
- javascript - 在同一视频标签中显示摄像机和屏幕共享流,无镜像效果
- cmd - 如何用 cmd 替换 Azure 控制台?
- java - 线程“主”java.lang.IllegalArgumentException 中的异常:org.hibernate.QueryException:无法解析属性:
- python - Python模式替换单引号或双引号之间的单词
- javascript - 如何在 Chrome 中导入 json 文件?