JSX-灵活性

简介: 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>






渲染表格列表


在企业开发当中经常会有这么一个需求,就是将后端返回过来的实现进行表格列表展示出来那么在 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 进行循环对应的数据,然后组装返回对应的元素即可完成列表渲染。

相关文章
|
20天前
|
JavaScript 前端开发 开发者
js模块化的好处
js模块化的好处
18 0
|
20天前
|
JavaScript 前端开发 安全
开发业务需求有必要引入 TypeScript 吗?
随着前端技术的不断更新和发展,TypeScript作为一种静态类型的JavaScript超集语言,逐渐在业界崭露头角,尤其是在当今快速发展的软件开发环境中,选择适合的开发工具和技术变得至关重要。在项目规模和复杂性的增加的同时,保证代码质量、可读性和可维护性成为开发团队的重要任务。这样的背景下,引入TypeScript作为一种开发工具来弥补JavaScript的某些弱点,已经成为许多开发团队的选择。那么TypeScript是否值得在业务中引入?它是否会取代JavaScript?那么本文就来聊聊在业务开发过程中是否有必要引入TypeScript,并讨论一下对于现代前端框架发展的看法和期待。
63 0
开发业务需求有必要引入 TypeScript 吗?
|
3天前
|
JavaScript 安全 IDE
对于大型项目,TypeScript的优势有哪些?
【6月更文挑战第1天】对于大型项目,TypeScript的优势有哪些?
11 6
|
7月前
|
JavaScript 前端开发 UED
JavaScript模块化:提高代码可维护性和可重用性的利器
JavaScript模块化:提高代码可维护性和可重用性的利器
77 0
|
20天前
|
JavaScript 前端开发
提高Vue开发效率的必杀技——掌握mixin代码复用技术!
Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!
|
20天前
|
JavaScript
Vue 插槽:让你的组件更具扩展性(下)
Vue 插槽:让你的组件更具扩展性(下)
Vue 插槽:让你的组件更具扩展性(下)
|
10月前
|
缓存 JavaScript 算法
Vue 3的响应式框架:性能和开发效率的提升
本文介绍了 Vue 3 响应式框架在性能和开发效率方面的提升。作为 Vue.js 框架的最新版本,Vue 3 引入了新的虚拟 DOM 算法,提高了渲染性能。同时,Vue 3 对组件层级进行了优化,使得组件渲染更加高效。此外,Vue 3 对模板编译进行了优化,提高了编译性能。在开发效率方面,Vue 3 引入了组合式 API,使得开发者可以更加灵活地组合和复用组件。Vue 3 还改进了 TypeScript 支持,使得 TypeScript 开发者可以更加方便地开发 Vue 应用。此外,Vue 3 还提供了更好的错误提示功能,帮助开发者更快地定位和解决问题。
248 1
|
12月前
|
JavaScript 前端开发 安全
使用TypeScript构建大型前端应用:类型安全和开发效率
TypeScript已经成为现代前端开发的热门选择,其提供了静态类型检查和其他强大的功能,为大型前端应用的开发带来了许多优势。本文将探讨使用TypeScript构建大型前端应用的好处,重点关注类型安全和开发效率的提升。
|
JavaScript 前端开发 开发者
组件化和模块化的区别|学习笔记
快速学习组件化和模块化的区别
796 0