Hello React
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <!-- 准备好一个“容器” --> <div id="test"></div>
<!-- 引入react核心库 --> <script type="text/javascript" src="../js/react.development.js"></script> <!-- 引入react-dom,用于支持react操作DOM --> <script type="text/javascript" src="../js/react-dom.development.js"></script> <!-- 引入babel,用于将jsx转为js --> <script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel" > const VDOM = <h1>Hello,React</h1> ReactDOM.render(VDOM,document.getElementById('test')) </script>
|
关于虚拟DOM:
1.本质是Object类型的对象(一般对象)
2.虚拟DOM比较“轻”,真实DOM比较“重”,因为虚拟DOM是React内部在用,无需真实DOM上那么多的属性。
3.虚拟DOM最终会被React转化为真实DOM,呈现在页面上。
虚拟DOM的两种创建方式
1 2 3 4 5 6 7 8
| const VDOM = ( <h1 id="title"> <span>Hello,React</span> </h1> ) ReactDOM.render(VDOM,document.getElementById('test'))
|
1 2 3 4
| const VDOM = React.createElement('h1',{id:'title'},React.createElement('span',{},'Hello,React')) ReactDOM.render(VDOM,document.getElementById('test'))
|
jsx语法规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 1.定义虚拟DOM时,不要写引号。
2.标签中混入JS表达式时要用{}。
3.样式的类名指定不要用class,要用className。
4.内联样式,要用style={{key:value}}的形式去写。
5.只有一个根标签
6.标签必须闭合
7.标签首字母
(1).若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错。
(2).若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。
|
js语句和js表达式的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 一定注意区分:【js语句(代码)】与【js表达式】
1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方
下面这些都是表达式:
(1). a
(2). a+b
(3). demo(1)
(4). arr.map()
(5). function test () {}
2.语句(代码):
下面这些都是语句(代码):
(1).if(){}
(2).for(){}
(3).switch(){case:xxxx}
|