由于今天没有带阮一峰老师的ES6书及所记得笔记,所以就先开辟一篇关于React的知识吧,都是些很很基础的知识,但是有些也是容易遗漏的知识哦。
JSX
使用JSX
- 我们可以任意的在JSX当中使用Javascript表达式,在JSX当中的表达式要包含在大括号里
由于JSX本身也属于表达式,所以我们可以在if或者for语句中使用JSX,将它赋值给变量,当做参数传入,当做返回值都可以。
123456789function getGreeting(user){if(user){for(var i=0;i<user.length;i++){return <h1>hello,{formatName(user)[i]}</h1>}}else if{return <h1>get out,{formatName(user)}</h1>}}如果JSX是闭合的,那么你需要在结尾用
/>
,就好像是XML/HTML一样,JSX标签同样可以相互嵌套。123456const element =(<div><h1>hello</h1><h1>good</h1></div>)由于JSX更加接近Javascript,所以ReactDom使用小驼峰定义属性名称,比如
className
JSX防注入攻击
你可以放心的在JSX当中使用用户输入
12const title = response.potentiallyMaliciousInputconst element = <h1>{title}</h1>
ReactDom 在渲染之前默认会过滤所有传入的值,他可以确保你的应用不会被注入攻击,所有的内容在渲染之前都被转换成字符串,这样可以有效的防止XSS(跨站攻击)攻击。
JSX代表Object
Babel转义器会把JSX转化成一个名为React.createElement()的方法调用。
12345const element = ( <h1 className = 'greeting'> hello </h1>)
||可以等价的看做(只做代码演示,实际代码并不如此)
12345const element = React.createElement('h1',{className:'greeting'},'hello world')
React.createElement()这个方法首先会进行一些避免Bug的检查,之后会返回一个类似下面例子的对象:
|
|