一、JSX简介
JSX,是JavaScript的语法扩展,表示在JavaScript中写HTML的代码,可以很好的描述UI应该呈现出它应有交互的本质形式。
1、JSX是一个表达式
在编译之后,JSX表达式会被转为普通的JavaScript函数调用,并得到其返回值。 所以,我们可以在if 语句、for循环 的代码块中使用JSX,可以将JSX赋值给变量 ,可以把JSX当做参数 传入。
2、JSX特定属性
1、可以通过引号,将属性值指定为字符串字面量
const element = <div tabIndex="1"></div>
2、可以使用大括号,在属性值中插入一个JavaScript表达式
const element = <img src={user.avatarUrl}></img>
注意:对于同一种属性不能同时使用这两种符号
我们需要注意的是,JSX在语法上更接近于JavaScript而不是HTML,所以我们在给变量命名时,使用小驼峰命名法来定义属性的名称。
3、使用JSX指定子元素
1、如果标签内没有内容,可以使用闭合标签 2、JSX标签内可以包含很多子元素
const element = (
<div>
<h1>你好</h1>
<h2>欢迎</h2>
</div>
)
4、JSX防止XSS攻击
首先了解一下什么是XSS攻击? XSS,即跨站脚本攻击,恶意攻击者向web网页里插入恶意HTML代码,用户浏览该网页时,嵌入的HTML代码会被执行,从而达到恶意攻击用户的特殊目的。 JSX如何防止XSS攻击? 可以安全的在JSX当中插入用户输入的内容。
const inputcontent = response.inputcontent;
const element = <h1>{inputcontent}</h1>
React DOM在渲染所有输入内容之前,默认会进行转义,所有的内容在渲染之前都被转换成了字符串,这样可以有效的防止XSS攻击。
二、元素渲染
1、元素是什么?
元素描述了你在屏幕上想看到的内容。
2、将一个元素渲染为DOM
通过ReactDOM.render()将react元素渲染到根DOM节点
const element = (<h1>hello,world</h1>)
ReactDOM.render(
element,
document.getElementById('root')
);
3、更新已经渲染的元素
React元素是不可变对象 ,一旦创建,就无法更改它的子元素或者属性。更新UI的唯一的方式就是创建一个新的元素,并将其传入ReactDOM.render()
三、组件和Props
组件允许将UI拆分为独立可复用的代码片段,每个代码片段进行独立的构思。 组件 :接收任意的传参,并返回用于描述页面展示内容的React元素。
1、函数组件和class组件
函数组件
function test(props){
return <h1>Hello,{props.name}</h1>
}
class组件
class Demo extends React.Component{
render() {
return <h1>Hello,{this.props.name}</h1>
}
}
注意:组件名称必须以大写字母开头
2、Props
当React元素为自定义组件时,它会将JSX所接受的属性转换为单个对象传递给组件,这个对象称为“props”
function Test(props){
return <h1>Hello,{props.name}</h1>
}
const element = <Test name="lisa"/>
ReactDOM.render(
element,
document.getElementById('root')
);
|