react与虚拟DOM、JSX

博客介绍了React的相关知识,采用组件化模式和声明式编码,可在React Native中进行移动端开发,使用虚拟DOM和diff算法减少与真实DOM交互。还讲解了虚拟DOM操作页面、与真实DOM的区别,以及JSX的基本用法和小练习,强调了表达式和语句的区分。

1、采用组件化模式、声明式编码,提高开发效率及组件复用率

2、在React Native中可以使用React语法进行移动端开发

3、使用虚拟DOM+diff算法,减少与真实Dom的交互

用虚拟dom操作页面

<!-- 准备好容器 -->
<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 VDOM = <h1>5555555</h1>
    ReactDOM.render(VDOM, document.getElementById('test'))
</script>

虚拟dom和真实dom的区别

<!-- 准备好容器 -->
<div id="test"></div>
<div id="demo"></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">//这里必须使用babel
    // 获取虚拟DOM
    const VDOM = <h1>5555555</h1>
    // 渲染虚拟DOM到页面
    ReactDOM.render(VDOM, document.getElementById('test'))
    // 真实DOM
    const TDOM=document.getElementById('demo')
    console.log('VDOM',VDOM);
    console.log('TDOM',TDOM);
    debugger
    // 关于虚拟DOM
    // 1、本质是object对象
    // 2、虚拟DOM比较轻,真实DOM比较重,因为虚拟DOM是React内部在用,无需真实DOM那么多属性
    // 3、虚拟DOM最终会被React转化为真实DOM,呈现在页面上

jsx一些基本用法

jsx等于js+xml

XML早期用于存储和传输数据

jsx语法规则

1、定义虚拟DOM时不要加引号

2、标签中混入js表达式时要用{}

3、样式的类名指定要用className

4、内联样式,要用style={{key:value}}的形式去写

5、只有一个根标签

6、标签必须闭合

7、标签首字母

(1)若小写字母开头,则将标签转为html中同名元素,若html没有该元素,会报错

(2)若大写字母开头,react会渲染对应组件,若组件没有定义,会报错

<div id="test"></div>
<script src="../js/react.development.js"></script>
<script src="../js/react-dom.development.js"></script>
<script src="../js/babel.min.js"></script>
<script type="text/babel">
    let myId = 55
    let redC = 'red'
    const VDOM = (<div>
        <h4 id={myId}>{myId}</h4>
        <span style={{ color: redC }}>999</span>
        <span className='fdf'>666</span>
        <input type="text" />
    </div>)
    ReactDOM.render(VDOM, document.getElementById('test'))
</script>

jsx小练习:把数组渲染到页面

重点:{里面只能放表达式}

一定注意区分【js语句(代码)】【js表达式】

1、表达式:一个表达式会产生一个值,可以放在任何一个需要值得地方

(1)a

(2)a+b

(3)fn(1)

(4)arr.map()

(5)function test(){}

2、语句(代码)

(1)if(){}

(2)for(){}

(3)switch(){case:xxxx}

<script type="text/babel">
    const data = ['vue', 'react', 'angular']
    const VDOM = (
        <div>
            <h1>前端框架</h1>
            <ul>
                {data.map((num,index)=>{
                    return <li key={index}>{num}</li>
                })}
            </ul>
        </div>
    )
    ReactDOM.render(VDOM, document.getElementById('test'))
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值