首页 > 其他分享 >React Native之JSX语法

React Native之JSX语法

时间:2023-05-05 12:13:00浏览次数:33  
标签:语法 const React createElement null JSX Native

一、什么是 JSX

JSX即JavaScript XML。一种在React组件内部构建标签的类XML语法。JSX为react.js开发的一套语法糖,也是react.js的使用基础。React在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此推荐使用JSX。

二、JSX 的基本使用

 2.1 为什么使用 JSX

​ 原因一:使用 React.createElement() 创建元素比较繁琐,不简洁

​ 原因二:代码不简洁,无法一眼就看出结构层次

    React.createElement(  'div', null,  
       React.createElement('h1', null, '购物列表'), 
       React.createElement('ul', null, 
          React.createElement('li', null, '华为'),  
          React.createElement('li', null, 'iPhone')
       )
   )

 2.2 JSX 简介

  • JSX 是 JavaScript XML 的简写,表示 JavaScript 代码中写 XML(HTML)格式的代码
  • 优势:声明式语法更加直观、与 HTML 结构相同,降低了学习成本、提升开发效率
  • JSX 是 react 的核心内容

利用 React.createElement() 方法创建元素

React.createElement(  'div', null,  
    React.createElement('h1', null, '购物列表'), 
    React.createElement('ul', null, React.createElement('li', null, '华为'),  React.createElement('li', null, 'iPhone'))
)
 JSX 语法
<div>
   <h1>购物列表</h1>
   <ul>
      <li>华为</li>
      <li>iPhone</li>
   </ul>
</div>

利用 JSX 语法,结构清晰,就是平时写的 HTML 标签

 2.3 使用步骤

 1.使用 JSX 语法创建react 元素
 // JSX 语法
 const el = (<h1>Hello JSX!</h1>)
 2.使用 ReactDOM.render() 方法渲染 react 元素到页面中
 // 渲染
 ReactDOM.render(el, document.querySelector('#root'))

 2.4 注意点   

    1.react 元素的属性名使用驼峰命名法:tabindex --> tabIndex
    2.特殊属性名: class --> className 、for --> htmlFor
    3.在 react 中所有的标签都必须闭合,无论是单标签还是双标签
    4.推荐:使用小括号包裹 JSX 结构,从而避免 JS 中的自动插入分号陷阱

3. JSX 中使用 JavaScript 表达式思考  

JSX 语法是好用,但是这和写静态 HTML 标签好像没有区别

如何动态显示数据?实际应用一般都是从服务器获取数据,并将数据显示在页面中

猜想一下,既然 JSX 是直接写在 JS 中的,那 JS 当中的变量或函数应该可以在 JSX 中访问

const data = 'OPPO'
render() {
    return (
        <div>
           <h1>购物列表</h1>
           <ul>
              <li>华为</li>
              <li>iPhone</li>
              <li>{data}</li>
          </ul>
       </div>
    )
}

3.1 嵌入 JS 表达式   

语法:{JavaScript表达式}

const name = '小明'
const dv = (
   <div>你好,我叫:{name}</div>
)

 注意点
 1.单打括号中可以是任意的 JavaScript 表达式,如:三元表达式,加减乘除,数组,字符串
 2.单大括号中不能出现语句(例如:if/for等)
 3.JS 对象一般只会出现在style属性中

4. JSX 的条件渲染

思考
    条件渲染:根据不同条件渲染不同的 JSX 结构
    典型场景:Ajax 异步请求数据中的 loading 效果
    结合之前的知识,猜想该如何实现
    虽然在 JSX 中无法直接写 if/else 判断,但是可以嵌入函数表达式
    在函数表达式中进行 if/else 判断

4.1 条件渲染实现   

可以在函数表达式中使用 if/else 或者三元运算符来实现

const loadData = () => {
    if(idLoading) {
        return <div>数据加载中...</div>
    } else {
        return <div>数据加载完成</div>
    }
}

const load = (
    <div>
        {loadData()}
    </div>
)

5. JSX 的列表渲染

思考:
实际开发中前端拿到的数据结构

const books = [
    {id: 1, name: 'React'},
    {id: 2, name: 'Vue'},
]

 如何转化为下面的这种结构

const books = [
    <li>React</li>,
    <li>Vue</li>,
]

5.1 列表渲染实现

    通过遍历数组的方法 map
    Array.prototype.map()

const list = (
    <ul>
        {books.map(item => <li>{item.name}</li>)}
    </ul>
)

6. JSX 的样式处理

   1. 行内样式 - style

<h1 style={{ color: 'red', backgroundColor: 'skyblue' }}>  
    JSX的样式处理
</h1>

  2.类名 - className
  需要使用 import '样式文件路径/样式文件名称.css’导入样式文件 ,title类在xxx.css文件中定义好

<h1 className="title">  
    JSX的样式处理
</h1>

总结

1.JSX 是React 的核心内容
2.JSX 表示在JS代码中写HTML结构,是React声明式的体现
3.使用 JSX 配合嵌入的 JS 表达式、条件渲染、列表渲染,可以描述任意 UI 结构
4.推荐使用 className 的方式给JSX添加样式


原文链接:https://blog.csdn.net/web00_11/article/details/121315226

标签:语法,const,React,createElement,null,JSX,Native
From: https://www.cnblogs.com/laolitou-ping/p/17373742.html

相关文章

  • umi +react 搭建项目细节记录
    配置请求域名,有umirc.ts文件可以直接在该文件加proxy:{  '/api':{ //检测域名后面带/api/的路径   target:'http://192.168.0.90', //要请求的域名或IP地址   'changeOrigin':true,   //'pathRewrite':{'^/api':''......
  • 第二节:react-redux详解、分模块、调式工具等
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • react 用父组件状态控制子组件状态方案
    react想用父组件的状态来控制子组件的状态。有时我们可能想在父组件里设置子组件某个状态的值,这时我们应该怎么实现代码呢?法一:把需要共享的状态放在子组件的参数里比如下面这个MyTestSubModal子组件,有2个状态:visible和loading,分别使用setVisible和setLoading来控制,不......
  • 在开发中,我发现的reactive和ref
    在开发中,我发现了一个问题,就是在element-plus-table组件中使用ref(),定义的数据,在vue文件内部去修改这个响应式数据,任何时候,响应式数据改变,基本上视图也会跟着变化。 但是当我觉得vue文件中script中的代码太长了,将一些功能抽出来,通过引入外部函数的方式去更新响应式数据时,就......
  • Uncaught Error: Objects are not valid as a React child (found: object with keys
    转自:react报错UncaughtError:ObjectsarenotvalidasaReactchild(found:objectwithkeys{a}...报错信息分析UncaughtError:ObjectsarenotvalidasaReactchild(found:objectwithkeys{content,key,duration}).Ifyoumeanttorenderacollectiono......
  • react.js学习笔记
    (1)      参考文献1.前端技术手册2.在线编码......
  • React 中 Router的相关面试题
    一、请你说说react的路由是什么?React的路由是纯前端的路由,就是根据hash或browserpath的变化,框架内封装好了方法,可以自由的切换DOM展示,来模拟页面或局部页面被替换的目的;让浏览器不用刷新,也能获取想要的页面结构,保存内存数据,提升用户体验 二、React-Router实现原理?当url发......
  • 闲聊 React hook,我们聊的是什么?
    Reacthook的由来Reacthook的由来,其实也可以看作是前端技术不断演进的结果。在worldwideweb刚刚诞生的洪荒时代,还没有js,Web页面也都是静态的,更没有所谓的前端工程师,页面的内容与更新完全由后端生成。这就使得页面的任意一点更新,都要刷新页面由后端重新生成,体验非常糟糕......
  • (一 ).react官网阅读 ———描述UI
    这个系列笔记,会从头阅读react官网文档内容,记录阅读笔记。从react官网首页可以(最重要部分是中间),分为两大块内容:学习React|API参考快速入门:介绍了常见的react概念:包括嵌套组件,状态提升,Hook等;同时还给出了react框架思想:学习React部分分为四大块;描述UI添加交互......
  • JSX语法介绍
    title:02-JSX语法介绍publish:trueJSX介绍JSX的引入如果直接让用户通过JS代码手动创建DOM元素,肯定是非常麻烦的。于是,React官方就提出了一套JSX语法规范,能够让我们在JS文件中,书写类似于HTML那样的代码,快速定义虚拟DOM结构。JSX的全称JSX:JavaScriptXML,一种类......