赵走x博客
网站访问量:151944
首页
书籍
软件
工具
古诗词
搜索
登录
49、Flux:理念、回顾Whinepad
48、lint、Flow、测试与复验:测试
47、lint、Flow、测试与复验:Flow
46、lint、Flow、测试与复验:ESLint
45、lint、Flow、测试与复验:package.json
44、构建实例应用:<Whinepad>
43、构建实例应用:应用配置
43、构建实例应用:<Excel>:改进的新版本
42、构建实例应用:组件:对话框
41、构建实例应用:组件:Actions
39、构建实例应用:表单:Form
38、构建实例应用:表单:<FormInput>“工厂组件”
37、构建实例应用:表单:Rating组件
36、构建实例应用:表单:Suggest
35、构建实例应用:Button组件
34、构建实例应用:组件
33、构建实例应用:Whinepad v.0.0.1
32、发布
31、开始构建
30、安装必备工具
29、为应用开发做准备:一个模板应用
28、JSX 和表单
27、JSX 和HTML 的区别
26、在JSX 中返回多个节点
25、展开属性
24、HTML 实体
23、JSX入门
22、Excel:一个出色的表格组件:下载表格数据
21、Excel:一个出色的表格组件:即时回放
20、Excel:一个出色的表格组件:搜索
19、Excel:一个出色的表格组件:编辑数据
18、Excel:一个出色的表格组件:排序
17、Excel:一个出色的表格组件
16、 PureRenderMixin
15、 性能优化:避免组件更新
14、 生命周期示例:使用子组件
13、组件生命周期示例:使用mixin
12、组件:生命周期方法
11、中途改变属性
10、从外部访问组件
9、在初始化state 时使用props:一种反模式
8、 props 与state
7、关于DOM 事件的说明
6、组件:带状态的文本框组件
5、组件的state
4、组件的propTypes
3、组件的属性
2、组件的基础
1、Hello World
50、Flux:Store
24、HTML 实体
资源编号:76074
书籍
React快速上手开发
热度:84
如果你在表达式中使用了HTML 实体,会遇到双重编码的问题。
在JSX 中可以使用HTML 实体,就像这样: ```
More info »
``` 这个例子输出一个右指双尖引号,如图4-6 所示:  图4-6:在JSX 中使用HTML 实体 然而,如果你在表达式中使用了HTML 实体,会遇到双重编码的问题。比如在下面这个例子中HTML 内容会被编码,结果如图4-7 所示: ```
{"More info »"}
```  图4-7:双重编码的HTML 实体 为了避免双重编码的情况,可以使用Unicode 版本的HTML 实体作为代替。在这个例子中,右指双尖引号对应的编码是\u00bb(编码表参见http://dev.w3.org/html5/html-author/charref ): ```
{"More info \u00bb"}
``` 出于方便起见,你可以在模块顶部定义一个对应该编码的常量。在这里,我们在符号前面再添加一个空格: ``` const RAQUO = ' \u00bb'; ``` 然后你就可以在任何地方通过常量使用这个符号了: ```
{"More info" + RAQUO}
{"More info"}{RAQUO}
``` 注意到这里使用新的const 关键字代替了var 关键字吗?借助Babel,你就可以使用JavaScript 提供的所有最新特性了。关于Babel 的具体内容将在第5章介绍。 ### 防范XSS 攻击 你可能会疑惑:为什么要这样煞费周折地使用HTML 实体?一个非常重要的目的是防范XSS 攻击。 为了防范XSS 攻击,React 会对所有字符串进行转义。当你向用户请求输入某些内容而用户提供了一串恶意的字符串时,React 可以保护你免受攻击。以这种用户输入为例: ``` var firstname = 'John
'; ``` 在某些情况下,你可能需要把这串字符插入DOM 节点。比如这样: ``` document.write(firstname); ``` 然后灾难发生了。页面输出的内容为John,但随后的`