首页 > 其他分享 >02-JSX-灵活性

02-JSX-灵活性

时间:2023-09-23 12:37:01浏览次数:30  
标签:02 return render 灵活性 代码 state flag JSX

JSX 灵活性

  • JSX 使我们在 JS 中拥有了直接编写 XML 代码的能力
  • 所以在 JS 中能干的事, 在 JSX 中都能干

例如有如下这么一个需求:通过按钮控制界面上 p 标签的显示和隐藏:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../react17/react.development.v17.js"></script>
    <script src="../react17/react-dom.development.v17.js"></script>
    <script src="../react17/babel.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
    class Home extends React.Component {
        constructor() {
            super();
            this.state = {
                flag: true
            }
        }

        render() {
            return (
                <div>
                    <p style={{display: this.state.flag ? 'block' : 'none'}}>我是段落</p>
                    <button onClick={this.myFn}>按钮</button>
                </div>
            )
        }

        myFn = () => {
            this.setState({
                flag: !this.state.flag
            })
        }
    }

    ReactDOM.render(<Home/>, document.getElementById('app'));
</script>
</body>
</html>

博主的实现代码如上,因为在 {} 中的内容与 JS 的内容一样,所以可以在当中进行编写逻辑的分支代码,来控制样式,通过观察发现,如上的实现和 Vue 中的 v-show 指令很像,其实除了通过 JSX 实现 Vue 当中 v-show 一样的指令功能以外,还可以实现 Vue 当中的 v-if 指令,如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../react17/react.development.v17.js"></script>
    <script src="../react17/react-dom.development.v17.js"></script>
    <script src="../react17/babel.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
    class Home extends React.Component {
        constructor() {
            super();
            this.state = {
                flag: true
            }
        }

        render() {
            return (
                <div>
                    {this.state.flag && <p>我是段落</p>}
                    <button onClick={this.myFn}>按钮</button>
                </div>
            )
        }

        myFn = () => {
            this.setState({
                flag: !this.state.flag
            })
        }
    }

    ReactDOM.render(<Home/>, document.getElementById('app'));
</script>
</body>
</html>

image-20220406193509116

渲染表格列表

在企业开发当中经常会有这么一个需求,就是将后端返回过来的实现进行表格列表展示出来那么在 JSX 当中该如何进行渲染呢,这个知识点就是博主现在要介绍的内容,那么废话不多说,直接上代码吧:

<script type="text/babel">
    class Home extends React.Component {
        constructor() {
            super();
            this.state = {
                names: ['鲁班', '虞姬', '黄忠']
            }
        }

        render() {
            const {names} = this.state;

            return (
                <div>
                    <ul>
                        {
                            names.map(name => {
                                return <li>{name}</li>
                            })
                        }
                    </ul>
                </div>
            )
        }

        myFn = () => {
            this.setState({
                flag: !this.state.flag
            })
        }
    }

    ReactDOM.render(<Home/>, document.getElementById('app'));
</script>

如上代码其实就是介绍了一个通过 map 进行循环对应的数据,然后组装返回对应的元素即可完成列表渲染。

标签:02,return,render,灵活性,代码,state,flag,JSX
From: https://www.cnblogs.com/lzAurora/p/17724180.html

相关文章

  • 01-JSX嵌入内容
    JSX嵌入表达式只要是合法的表达式,都可以嵌入到JSX中任何合法的JS表达式都可以嵌入到{}中<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,u......
  • 随想录Day4|24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07.
    随想录Day4|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表Ⅱ 24.两两交换链表中的节点文章讲解视频讲解给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,......
  • 【2023潇湘夜雨】WIN11_Pro_22H2.23545.1000软件选装纯净版9.23
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.23545.1000。2.增加部分优化方案,手工精简部分较多。3.OS版本号为23545.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、......
  • JOI Final 2022
    怎么这么难!写BCDE。loj3663.「JOI2022Final」自学tag:二分,贪心。先不妨假设\(A_i\geqB_i\)。二分,然后考虑怎么选。发现方案一定是:如果能上课就先上课把需求填满,然后空出来的时间用来自学上课上不满的课程。如何证明。只需要证明:不存在上课能满足需求的,需要用别的课的......
  • 【2023潇湘夜雨】WIN11_Pro_22H2.22621.2359软件选装纯净版9.22
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.22621.2359。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22621.2359。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.13.0.8》网卡版、......
  • CentOS7 关于Linux Polkit本地权限提升漏洞(CVE-2021-4034)的在线和离线的两种修复方式
    CentOS7关于LinuxPolkit本地权限提升漏洞(CVE-2021-4034)的在线和离线的两种修复方式https://blog.csdn.net/liangtongning/article/details/122805070在线修复yumcleanall&&yummakecacheyumupdatepolkit-y[root@Fort~]#yumcleanall已加载插件:fastestmirror......
  • 20230923
    //assure,beneficial,correspond,courtesy,desirous,deteriorate,discussion,interim,keen,maintain,requirement,valid,regularcustomer,substantialbusinessassure-保证Toassuremeanstogivesomeoneconfidenceorcertaintyaboutsomething.Itinv......
  • 自我介绍102101631
    自我介绍我叫陈康杰,学号是102101631我来自fzu我平常喜欢看一些历史文我最喜欢的歌手是周杰伦我最喜欢的歌曲是《一路向北》食堂里我最喜欢的是烤盘饭(虽然每次吃饱都花了很多的币)......
  • 2023-09-22-周五
    1),现在是09-23,写昨天的日记喽,,,只能说我依稀记得上一周的现在,,,啊啊啊子在川上曰:“逝者如斯夫,不舍昼夜"2),一天除了在整理内核笔记,,好像没干什么...哭死3),下午又是段老师的课,他又谈及了xxxx..说一些学长上课不听课,,然后后悔...发现什么是有用的,,,然后导致他们自......
  • 2023-2024年毕业设计开题报告怎么写
    毕业设计(论文)开题报告一、选题的目的和意义酒店是集餐饮、住宿为一体的综合性服务机构,酒店结合用户对各种数据的要求,充分利用互联网传播信息的优势,管理效率高,应用灵活的数据库管理系统,提出开发使用酒店住宿管理系统。本系统的设计最大的特点是实用性和有效性。无论什么样的用户,都......