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

网站建设公司 壹起航广州网络推广外包平台

网站建设公司 壹起航,广州网络推广外包平台,西安城乡建设委会网站,网站建设虚拟JSX 是什么 JSX是一种 JavaScript 的语法扩展(extension), 也在很多地方称之为 JavaScript XML, 因为看起就是一段XML语法。它用于描述我们的Ul界面,并且其完成可以和 JavaScript 融合在一起使用; 为什么 React 选择使用 jsx? React 认为渲…

JSX 是什么

JSX是一种 JavaScript 的语法扩展(extension), 也在很多地方称之为 JavaScript XML, 因为看起就是一段XML语法。它用于描述我们的Ul界面,并且其完成可以和 JavaScript 融合在一起使用;

为什么 React 选择使用 jsx?

React 认为渲染逻辑本质上与其他 UI 存在内在耦合。也就是说 UI 需要绑定事件、展示数据,而在数据状态改变时,有需要更改UI 。因为 React 打算将他们放在一起,js in html => jsx 。

JSX的顶层只能有一个根元素,所以我们很多时候会在外层包裹一个div元素(或者 Fragment);

  • 为了方便阅读,我们通常在jsx的外层包裹一个小括号(),这样可以方便阅读,并且jsx可以进行换行书写;

  • JSX中的标签可以是单标签,也可以是双标签;

    注意:如果是单标签,必须以 />

JSX 的使用

JSX 嵌入变量作为子元素

  • 情况一:当变量是Number、String、Array类型时,可以直接显示

  • 情况二:当变量是null、undefined、Boolean类型时,内容为空;

    如果希望可以显示null、undefined、Boolean,那么需要转成字符串;
    转换的方式有很多,比如toString方法、和空字符串拼接,String (变量)等方式;

  • 情况三:Object对象类型不能作为子元素(not valid as a React child)

JSX 嵌入表达式:

  • 运算表达式
  • 三元表达式
  • 执行一个函数

JSX 绑定属性:

  • 比如元素都会有title属性
  • 比如img元素会有src属性
  • 比如a元素会有href属性
  • 比如元素可能需要绑定class(className,class是关键字会警告)
  • 比如原生使用内联样式style(写成对象的形式)

props 传递组件

我们知道 props 可以传递数据,但实际上,组件也可以通过 props 进行传递。

如果使用 children 传递的话,如果嵌套多个子节点,children 会是一个子节点对象的数组;如果只有一个,那么children 是一个子节点的对象。

在这里插入图片描述

除了这样传递,还可以通过具体的属性名传递组件。

在这里插入图片描述

这样就是 React 中实现类似于 Vue 中插槽的作用。此外,还可以实现类似于作用域插槽的用法:

在这里插入图片描述

Vue 中的插槽用法完全通过 React 中的父子组件通信搞定,因此React 相较于 Vue 来说,灵活程度大大提升。

事件绑定

原生 DOM :1. 获取DOM元素,添加监听事件。2. 原生 HTML 直接绑定 onclick。

React:事件命名采用小驼峰,传入一个事件处理函数,会在事件发生时被执行。

JSX 本质

实际上,jsx 仅仅只是 React.createElement(component, props, …children) 函数的语法糖。

所有的jsx最终都会被转换成 React.createElement 的函数调用。

createElement需要传递三个参数:

  • 参数一:type
     当前ReactElement的类型;
     如果是标签元素,那么就使用字符串表示 “div”;
     如果是组件元素,那么就直接使用组件的名称;
  • 参数二:config
     所有jsx中的属性都在config中以对象的属性和值的形式存储;
     比如传入className作为元素的class;
  • 参数三:children
     存放在标签中的内容,以children数组的方式进行存储;
     当然,如果是多个元素呢?React内部有对它们进行处理,可以通过 babeljs.io 中 try it out 查看转换后的代码 https://babeljs.io/repl/#?presets=react

image-20250222095953911

所以,如果我们在代码中直接使用 babel 转换后的代码(全部改为 js 的写法),而不是 jsx 语法,一样可以正常开发。

image-20250222100344055

React.createElement 最终返回一个 ReactElement 对象。这个对象组成了一个 js 对象树,也就是虚拟DOM。(可以通过打印上述 element 查看虚拟DOM 树的结构)

虚拟DOM帮助我们从命令式编程转到了声明式编程的模式。render 方法就是让 虚拟DOM 和真实 DOM 同步起来,这个过程叫做 协调。
构)

虚拟DOM帮助我们从命令式编程转到了声明式编程的模式。render 方法就是让 虚拟DOM 和真实 DOM 同步起来,这个过程叫做 协调。

http://www.dtcms.com/wzjs/127873.html

相关文章:

  • 长沙高新区住房和建设管理局网站百度联盟官网
  • 伴奏网站防盗是怎么做的seo技术大师
  • 商务网站创建方案怎么推广app
  • 网站交给别人做安全吗培训体系搭建
  • 汽车租赁网站建设天津seo顾问
  • 外贸网站 php郑州做网站的大公司
  • 在门户网站中企业推广宣传文案
  • 智能客服的发展前景站长工具seo综合查询降级
  • 网站后台登录域名360推广登录入口官网
  • wordpress 学校模板湛江seo
  • 服务器租用国外浙江搜索引擎优化
  • the7 wordpress themeseo的优化步骤
  • 广东建设执业网站网站推广途径和推广要点
  • 芗城网站建设公司seo推广公司招商
  • 丹阳网站建设咨询济南百度
  • 九江 网站建设百度论坛首页官网
  • 农业技术网站建设原则商品标题seo是什么意思
  • 做网站模板的网页名称是m开头站长友情链接
  • 哪些软件可以做网站杭州百度推广公司有几家
  • nba网站设计seo外包上海
  • wordpress媒体库限制百度seo入驻
  • 哪些网站可以做易拉宝电商seo搜索引擎优化
  • 绿色食品网站建设可行性站内推广的方法和工具
  • 网站评估 源码免费发布信息网网站
  • 最新新闻摘抄2022年网站怎么优化seo
  • 贵阳奇点未来网站建设新手怎么做网页
  • 做网站的策划书网站建设全包
  • 广州市医院网站建设哪家好网络营销创意案例
  • 如何创作网站网址查询域名解析
  • 建筑工程公司名字大全seo全网优化指南