博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React.js 小书 Lesson23 - dangerouslySetHTML 和 style 属性
阅读量:6721 次
发布时间:2019-06-25

本文共 1424 字,大约阅读时间需要 4 分钟。


React.js 小书 Lesson23 - dangerouslySetHTML 和 style 属性

本文作者:

本文原文:

转载请注明出处,保留原文链接以及作者信息

在线阅读:


{% raw %}

这一节我们来补充两个之前没有提到的属性,但是在 React.js 组件开发中也非常常用,但是它们也很简单。

dangerouslySetHTML

出于安全考虑的原因(XSS 攻击),在 React.js 当中所有的表达式插入的内容都会被自动转义,就相当于 jQuery 里面的 text(…) 函数一样,任何的 HTML 格式都会被转义掉:

class Editor extends Component {  constructor() {    super()    this.state = {      content: '

React.js 小书

' } } render () { return (
{this.state.content}
) }}

假设上面是一个富文本编辑器组件,富文本编辑器的内容是动态的 HTML 内容,用 this.state.content 来保存。我希望在编辑器内部显示这个动态 HTML 结构,但是因为 React.js 的转义特性,页面上会显示:

示例图片

表达式插入并不会把一个 <h1> 渲染到页面,而是把它的文本形式渲染了。那要怎么才能做到设置动态 HTML 结构的效果呢?React.js 提供了一个属性 dangerouslySetInnerHTML,可以让我们设置动态设置元素的 innerHTML:

...  render () {    return (      
) }...

需要给 dangerouslySetInnerHTML 传入一个对象,这个对象的 __html 属性值就相当于元素的 innerHTML,这样我们就可以动态渲染元素的 innerHTML 结构了。

有写朋友会觉得很奇怪,为什么要把一件这么简单的事情搞得这么复杂,名字又长,还要传入一个奇怪的对象。那是因为设置 innerHTML 可能会导致跨站脚本攻击(XSS),所以 React.js 团队认为把事情搞复杂可以防止(警示)大家滥用这个属性。这个属性不必要的情况就不要使用。

style

React.js 中的元素的 style 属性的用法和 DOM 里面的 style 不大一样,普通的 HTML 中的:

React.js 小书

在 React.js 中你需要把 CSS 属性变成一个对象再传给元素:

React.js 小书

style 接受一个对象,这个对象里面是这个元素的 CSS 属性键值对,原来 CSS 属性中带 - 的元素都必须要去掉 - 换成驼峰命名,如 font-size 换成 fontSizetext-align 换成 textAlign

用对象作为 style 方便我们动态设置元素的样式。我们可以用 props 或者 state 中的数据生成样式对象再传给元素,然后用 setState 就可以修改样式,非常灵活:

React.js 小书

只要简单地 setState({color: 'blue'}) 就可以修改元素的颜色成蓝色。

{% endraw %}

下一节中我们将介绍。

你可能感兴趣的文章
rsync +inodify实现文件同步
查看>>
mysql 控制台上传数据库
查看>>
Java8 十大新特性详解
查看>>
Python-练习7
查看>>
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
查看>>
程序员面试100题之5
查看>>
有环单链表
查看>>
关于MetaProgramming
查看>>
每天一命令 git stash
查看>>
我的友情链接
查看>>
学霸去哪儿
查看>>
ios实现视频录制功能 三 获取视频、保存到相册、根据视频生成占位图片
查看>>
Tommcat源码学习(四)--Tomcat_7.0.70 server.xml文件的加载与解析
查看>>
经济学人:计算机如何学习人类语言?
查看>>
学习设计模式——外观模式
查看>>
Linux命令-----文件和目录管理
查看>>
tomcat6优化配置(参考网络资源整理)
查看>>
完全禁用虚拟机时间同步
查看>>
删除mysql中user为空用户
查看>>
windows10下MongoDB的安装
查看>>