react动态渲染列表与函数式组件

1.如何使用jsx语法动态渲染列表呢,下边我用一个例子来切实总结一下

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jsx练习动态渲染列表</title>
</head>
<body>
     <!-- 引入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语法的库,用于将jsx转换为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>

    <!-- 准备一个容器用于渲染接收虚拟dom -->
     <div id="test"></div>

    <script type="text/babel">
        // 一定注意区分:【js语句】和【js表达式】
        // 表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方
        // 下边这些都是表达式
        // (1)a
        // (2)a+b
        // (3)demo(1)
        // (4)arr.map()
        //  (5)function(){}
        // 语句(代码)
        // 下边这些都是语句(代码)控制代码走向
        // (1)if(){}
        // (2)for(){}
        // (3)while(){}
        // (4)switch(){}
      




        const myData = [
            {id:1,name:'张三',age:18},
            {id:2,name:'李四',age:19},
            {id:3,name:'王五',age:20},
            {id:4,name:'赵六',age:21},
            {id:5,name:'孙七',age:22},
        ]
        // 创建虚拟dom
        const VDOM = (
            <div>
                <h1>前端jsx框架</h1>
                <ul>
                    {
                        myData.map((item,index) =>{
                            return <li key={index}>{item.id}{item.name}{item.age}</li>
                            
                        })
                    }
                </ul>
            </div>
        )

        // 渲染虚拟dom到页面
        ReactDOM.render(VDOM,document.getElementById('test'))

    </script>
</body>
</html>

2.函数式组件

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数式组件</title>
</head>
<body>
     <!-- 引入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语法的库,用于将jsx转换为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>

    <!-- 准备一个容器用于渲染接收虚拟dom -->
     <div id="test"></div>

    <script type="text/babel">
        // 1.创建函数式组件
        function Hello_react(){
            console.log(this);//此处this是undefinded,因为babel编译后开启了严格模式
            return(
                <div>
                    <h2>你好我是函数式组件</h2>
                </div>
            )
        }
      

        ReactDOM.render(<Hello_react/>,document.getElementById('test'))


      

    </script>
</body>
</html>

通过上述例子总结

1.函数式组件,其实就是一个函数,返回值就是虚拟dom

2.函数名就是组件名,首字母必须大写

3.函数名必须和文件名一致

4.函数式组件没有this,但是可以通过props获取父组件向子组件传递的属性

5.函数式组件没有状态,但是可以通过props向子组件传递状态

6.函数式组件没有生命周期,但是可以通过props向子组件传递生命周期

ReactDOM.render(<Hello_react/>,document.getElementById('test'))之后发生了什么?

1.React解析组件标签,找到了ello_react组件

2.发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后就是看到的页面

相关推荐
AI编程实验室13 小时前
Node.js Agent Handoff 仓库扫描 MVP:忽略规则、include 通配与稳定输出实现
前端·ai编程
猫不易13 小时前
从 Virtual DOM 到 Vapor:Vue 3.6 的另一条路
前端·vue.js
小林ixn13 小时前
在浏览器里跑 DeepSeek-R1:WebGPU + Transformers.js 实战
react.js·llm·浏览器
光影少年13 小时前
react navite性能优化 & 常见坑
前端·react native·掘金·金石计划
八角丶13 小时前
Node.js Cluster 详解
前端·node.js
名字还没想好☜13 小时前
React 用 useEffect 做轮询实战:setInterval 拿到旧 state 的闭包陷阱与正确清理
前端·javascript·react.js·react·useeffect
hiahiahia12313 小时前
AI Web 项目的文件到底应该怎么放?
前端·人工智能
愚公搬代码13 小时前
【愚公系列】《Web应用安全》003-测试环境的搭建
前端·安全
_codemonster14 小时前
主流前端技术分层选型
前端
犹豫的果冻布丁16 小时前
从零给 DeepSeek Harness 写一个壁纸皮肤插件(已开源)
前端·后端