当前位置: 首页 > news >正文

了解JSX

在React中使用JSX

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8" />

    <title>JSX</title>

</head>

<body>

    JSX

    <!-- JSX

    概念:JSX是JavaScript和XML的缩写,表示在js代码中编写HTML

    模板结构,它是React中编写UI模板的方式

    优势:HTML的声明模板写法,JS的可编程能力

    本质:JSX并不是标准的JS语法,它是JS的语法扩展,浏览器本身不能识别,需要通过解析工具左解析之后才能在浏览器中运行

    -->

    JSX中使用JS表达式

    <!--JSX中使用JS表达式

        在JSX中可以通过大括号语法{}识别JavaScript中的表达式,比如常见的变量,函数调用,方法调用等等

        1.使用引号传递字符串

        2.使用JavaScript变量

        3.函数调用和方法调用

        4.使用JavaScript对象

     -->

     <!--

        const count =100

        function getname(){

        return 'jack'

        }

        function App() {

        // return里面就是JSX

        return (

            <div className="App">

            this is app

            {/* 字符串 */}

            {'this is message'}

            {/* JavaScript变量 */}

            {count}

            {/* 函数调用 */}

            {getname()}

            {/* 方法调用 */}

            {new Date().getDate()}

            {/* JS对象 */}

            <div style={{color:'red'}}>this is div</div>

           

            {/* 外层{}是识别表达式的语法,内层{}是识别对象结构 */}

            {/* 注意:只有表达式可以识别,if语句,switch语句,声明变量属于语句,不是表达式,不能出现在{}中*/}

            -->

            渲染列表

            <!-- 渲染列表

           

                const list = [

                { id: 1001, name: 'Vue' },

                { id: 1002, name: 'React' },

                { id: 1003, name: 'Angular' }

            ]  

            <div className="App">

                {/* 渲染列表 */}

                {/* map 循环哪个结构 return结构 */}

                {/* 注意事项:加上一个独一无二的key 字符串或者number id */}

                {/* key的作用:React框架内部使用 提升更新性能的 */}

                <ul>

                    {list.map(item => <li key ={item.id} >{item.name}</li>)}

                </ul>

            </div>

            -->

            JSX中实现条件渲染

            <!-- 语法:在React中可以通过逻辑与运算符&&,三元表达式(?:)实现基础的条件渲染 -->

            <!--

                const isLogin = true

                function App () {

                return (

                    <div className="App">

                    {/* 逻辑与 && */}

                    {isLogin && <span>this is span</span>}

                    {/* 三元运算 */}

                    {isLogin ? <span>jack</span> : <span>loading...</span>}

                    </div>

                )

                }

             -->

             复杂条件渲染

             <!--

                // 定义文章类型

                const articleType = 3  // 0 1 3

                // 定义核心函数(根据文章类型返回不同的JSX模版)

                function getArticleTem () {

                    if (articleType === 0) {

                        return <div>我是无图文章</div>

                    } else if (articleType === 1) {

                        return <div>我是单图模式</div>

                    } else {

                        return <div>我是三图模式</div>

                    }

                }

                function App () {

                    return (

                        <div className="App">

                        {/* 调用函数渲染不同的模版 */}

                        {getArticleTem()}

                        </div>

                    )

                }

              -->

              React基础事件绑定

              <!-- 基础语法:on+事件名称 = {事件处理程序},整体上遵循驼峰命名法

                   使用事件对象参数,语法:在事件回调函数中设置形参e

                   注意:不能直接写函数调用,这里事件绑定需要一个函数引用

                     // 基础绑定

                    // const handleClick = () => {

                    //   console.log('button被点击了')

                    // }

                    return (

                    <div className="App">

                    <button onClick={handleClick}>click me </button>

                    </div>

                    // 事件参数e

                    // const handleClick = (e) => {

                    //   console.log('button被点击了', e)

                    // }

                    return (

                    <div className="App">

                    <button onClick={handleClick}>click me </button>

                    </div>

                    // 传递自定义参数

                    // const handleClick = (name) => {

                    //   console.log('button被点击了', name)

                    // }

                    return (

                    <div className="App">

                    <button onClick={() => handleClick('jack')}>click me </button>

                    </div>

                    // 既要传递自定义参数 而且还要事件对象e

                    const handleClick = (name, e) => {

                        console.log('button被点击了', name, e)

                    }

                    return (

                        <div className="App">

                        <button onClick={(e) => handleClick('jack', e)}>click me </button>

                       

                        </div>

                    )

                    }

            -->

</body>

</html>

相关文章:

  • vue升级题
  • 电子学会C/C++编程等级考试2021年09月(三级)真题解析
  • C#,《小白学程序》第十八课:随机数(Random)第五,方差及标准方差(标准差)的计算方法与代码
  • 1panel在应用商店里面安装jenkins
  • LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  • C_5练习题
  • leetcode面试经典150题——31 无重复字符的最长子串(方法二极简代码!!!)
  • 操作系统题目分类总结 | 进程管理 内存管理 文件系统 设备管理
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十二)
  • HCIP中期实验
  • CentOS7安装Docker运行环境
  • Echarts title标题配置项的使用 更改颜色 副标题
  • 【数据库】缓冲区管理器结构,几种常用替换策略分析,pin钉住缓冲区块防止错误的替换,以及缓冲区管理带来的代价优化
  • BERT-pytorch源码实现,解决内存溢出问题
  • Java入坑之模块化
  • Google 是如何开发 Web 框架的
  • “大数据应用场景”之隔壁老王(连载四)
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES6之路之模块详解
  • Flex布局到底解决了什么问题
  • javascript数组去重/查找/插入/删除
  • Java多态
  • JS学习笔记——闭包
  • Rancher-k8s加速安装文档
  • 闭包--闭包作用之保存(一)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于axios的vue插件,让http请求更简单
  • 前端攻城师
  • 前端自动化解决方案
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 怎么将电脑中的声音录制成WAV格式
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 1.Ext JS 建立web开发工程
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (16)Reactor的测试——响应式Spring的道法术器
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .chm格式文件如何阅读
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET与 java通用的3DES加密解密方法
  • @EventListener注解使用说明
  • @private @protected @public
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @取消转义
  • [.NET]桃源网络硬盘 v7.4
  • [C#基础]说说lock到底锁谁?
  • [C++基础]-入门知识