jsx语法
JSX是类似于XML的js扩展语法,其本质是React.createElement(component,props,…children)方法的语法糖
注:XML早期用于存储和传输数据。
XML格式如下:
1 2 3 4
| <student> <name>Tom</name> <age>19</age> </student>
|
JSON格式如下:
1
| "{"name":"Tom","age":19}"
|
jsx语法规则
1、定义虚拟DOM时,不要写引号。
1 2 3 4 5
| const VDOM=( /* 此处一定不要写引号,因为不是字符串 */ <h1 id="test"> <span>Hello,React</span> </h1>) //2.渲染虚拟DOM到页面 ReactDOM.render(VDOM,document.getElementById('test')).
|
2、标签里如果要用JS的表达式,要用{}。
1 2 3 4 5 6 7
| const myID="Test"; const string1="Hello,React" const VDOM=( /* 此处一定不要写引号,因为不是字符串 */ <h1 id={myID.toLowerCase()}> <span>{string1.toLowerCase()}</span> </h1>) //2.渲染虚拟DOM到页面 ReactDOM.render(VDOM,document.getElementById('test')).
|
3、写样式时指定类名不用class,用className。
1 2 3 4 5 6 7
| const myID="Test"; const string1="Hello,React" const VDOM=( /* 此处一定不要写引号,因为不是字符串 */ <h1 className="title" id={myID.toLowerCase()}> <span>{string1.toLowerCase()}</span> </h1>) //2.渲染虚拟DOM到页面 ReactDOM.render(VDOM,document.getElementById('test')).
|
1 2 3 4 5
| <style> .title{ background:red; } </style>
|
4、写内联样式时用style="{{kay:value}}"的样式。
1 2 3 4 5 6 7
| const myID="Test"; const string1="Hello,React" const VDOM=( /* 此处一定不要写引号,因为不是字符串 */ <h1 className="title" id={myID.toLowerCase()}> <span style={{color:'white',fontSize:'29px'}}>{string1.toLowerCase()}</span> </h1>) //2.渲染虚拟DOM到页面 ReactDOM.render(VDOM,document.getElementById('test')).
|
5、虚拟DOM必须只有一个根标签。
6、标签必须闭合。
7、标签首字母
1)若小写字母开头,则将标签转为html中同名元素,若html中不存在同名元素,则报错。
2)若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。
注:区分js语句和js表达式
1、表达式:会产生一个值,可以放在任何一个需要值的地方。如a、a+b、demo(1)、arr.map()、function test(){}
2、语句(代码):
比如if(){}、for(){}、switch(){case: ….}