React学习笔记(一)

132 阅读1分钟

React简介

1.react是什么?

React用于构建用户界面的JS库。是一个将数据渲染为HTML视图的开源JS库。

2.为什么学

  • 原生JS操作DOM繁琐,效率低
  • 使用JS直接操作DOM,浏览器会进行大量的重绘重排
  • 原生JS没有组件化编码方案,代码复用低

一.React 基础案例

1.先导入三个包:

【先引入react.development.js,后引入react-dom.development.js,babel.min.js 】

react.development.js
react-dom.development.js
babel.min.js 

2.创建一个容器

3.创建虚拟DOM,渲染到容器中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="../favicon.ico">
    <title>hello_react</title>
</head>
<body>
<!--准备好一盒”容器“-->
<div id="test"></div><!-- 引入依赖 ,引入的时候,必须就按照这个步骤-->
<!--引入react核心库-->
<script src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script src="../js/babel.min.js"></script><!--这里使用了babel用来解析jsx语法-->
<script type="text/babel"><!--一定要写babel-->
    //1.创建虚拟DOM
    const VDOM = <h1>Hello</h1>/*此处一定不要写引号,jsx语法,因为不是字符串*/
    //2.渲染虚拟DOM到页面
    ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>

这样,就会在页面中的这个div容器上添加这个h1.

1611196030416.png

二.虚拟DOM创建DOM

1.虚拟DOM的两种创建方式

  • 第一种创建方式
<script type="text/babel">
    //1.创建虚拟DOM
    const VDOM = ( /*此处一定不要写引号,jsx语法,因为不是字符串*/
            <h1 id="title">
                <span>Hello,React</span>
            </h1>
    )
    //2.渲染虚拟DOM页面
    ReactDOM.render(VDOM,document.getElementById('test'))
</script>
  • 第二种创建方式
<script type="text/babel">
//1.创建虚拟DOM
const VDOM = React.createElement('h1',{id:'title'}, React.createElement('span',{},'Hello,React'))
//2.渲染虚拟DOM页面
ReactDOM.render(VDOM,document.getElementById('test'))
</script>

总结:两种方式都可以创建DOM,且第一种也更加贴近我的习惯。

三.jsx语法

  • 定义虚拟DOM,不能使用引号
  • 标签中混入JS表达式的时候使用{}
  • 样式的类名指定不要使用class,使用className
  • 内敛样式要使用双大括号包裹
  • 不能有多个根标签,只能有一个跟标签
  • 标签必须闭合
  • 如果小写字母开头,就将标签转化为html同名元素,如果html中无该标签对应的元素,就报错
  • 如果是大写字母开头,react就去渲染对应的组件,如果没有就报错.

关于JS表达式和JS语句:

  • JS表达式:返回一个值,可以放在任何一个需要值的地方a a+b demo(a) arr.map() function text(){}
  • JS语句:if(){} for(){} while(){} swith(){} 不会返回一个值

实例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="../favicon.ico">
    <title>3_虚拟DOM与真实DOM</title>
    <style>
        #test{
            background-color: pink;
        }
    </style>
</head>
<body>
<!--准备好一盒”容器“-->
<div id="test"></div><!-- 引入依赖 ,引入的时候,必须就按照这个步骤-->
<!--引入react核心库-->
<script src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script src="../js/babel.min.js"></script><script type="text/babel">
    const myId = 'PikAKa'
    const myData = "Hello,rEaCt"
​
    //1.创建虚拟DOM
    const VDOM = ( /*此处一定不要写引号,jsx语法,因为不是字符串*/
       <div>
           <h1 className="title" id={myId.toLowerCase()}>
               <span style={{color:'red',fontSize:'30px'}}>{myData.toLowerCase()}</span>
           </h1>
           <h1 className="title" id={myId.toUpperCase()}>
               <span style={{color:'red',fontSize:'30px'}}>{myData.toLowerCase()}</span>
           </h1>
           <input type="text" />
​
​
       </div>
    )
    //2.渲染虚拟DOM页面
    ReactDOM.render(VDOM,document.getElementById('test'))
    
</script>
</body>
</html>

四.jsx小练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="icon" href="../favicon.ico">
    <title>jsx小练习</title>
</head>
<body>
<!--准备好一盒”容器“-->
<div id="test"></div><!--引入依赖 ,引入的时候,必须就按照这个步骤-->
<!--引入react核心库-->
<script src="../js/react.development.js"></script>
<!--引入react-dom,用于支持react操作DOM-->
<script src="../js/react-dom.development.js"></script>
<!--引入babel,用于将jsx转为js-->
<script src="../js/babel.min.js"></script><script type="text/babel">
    // 模拟一些数据
    const data = ['Angular','React','Vue']
    //1.创建虚拟DOM
    const VDOM = (
        <div>
            <h1>前端js框架列表</h1>
            <ul>
                {
                    //{}里面只能放表达式
                    //如果渲染的是一个列表,每一行必须要有一个key
                    data.map((item,index)=>{
                        return <li key="{index}">{item}</li>
                    })
                }
            </ul>
        </div>
    )
    //2.渲染虚拟DOM页面
    ReactDOM.render(VDOM,document.getElementById('test'))
</script>
</body>
</html>

结果如下:

1641543411.jpg

五.参考

React官网:react.docschina.org/

尚硅谷视频:www.bilibili.com/video/BV1wy…