深入解读 React 核心(中)

本文深入探讨React的核心——组件,包括函数组件和类组件的使用,讲解JSX、props、组件命名规范等内容,揭示React响应式设计的工作原理。通过实例解析组件的编写与重用,帮助读者理解React的组件化思想。
摘要由CSDN通过智能技术生成

引言

本系列涵盖了使用 React 的所有知识,分为上、中、下三篇。本篇主讲 React 组件。

上篇主讲 React 元素渲染:

深入解读 React v16.9(上)

本系列涵盖 React v16.9,但更多的是 React 全面解析,具体 React v16.9 新特性可查看:

[译]React v16.9 新特性

五、React 核心是组件

在 React 中,我们使用组件(有状态、可组合、可重用)来描述 UI 。

React 组件也一样, 它的输入是  props,输出是关于 UI 的描述。我们可以在多个 UI 中重用单个组件,组件也可以包含其他组件。React 组件的本质上就是一个普通的 JavaScript 函数。

为什么将 React 称为响应式设计?

当 React 组件的状态(它是其输入的一部分)发生更改时,它所代表的 UI (其输出)也会发生更改。UI 描述中的这种变化必须反映在我们正在使用的设备中。在浏览器中,我们需要更新 DOM 树。在 React 应用程序中,我们不会手动执行此操作。state 更新时,React 自动响应,并在需要时自动(并有效)更新到 DOM 上。

六、函数组件

React 组件,最简单的形式就是  JavaScript 函数:

function Button (props) {
  // 在这里返回一个DOM / React元素。例如:
  return <button type="submit">{props.label}</button>;
}

// 在浏览器中渲染一个 Button 元素 
ReactDOM.render(<Button label="Save" />, mountNode);

我们在 ReactDOM.render 中渲染 Button 组件,使用了类似 HTML 的样式,但它既不是 HTML,也不是 JS,甚至不是 React。这就是 JSX ,它是 JavaScript 的扩展,允许我们以类似于 HTML 的函数语法编写函数调用。

你可以尝试在 Button 函数内返回其他 HTML 元素,看看它们是如何被支持的(例如,返回 input 元素或 textarea 元素)。

1. JSX 不是 HTML

每个 JSX 元素只是调用 React.createElement(component, props, ...children) 的语法糖。因此,使用 JSX 可以完成的任何事情都可以通过纯 JS 完成。

上例就可以编写为不使用 JSX 的代码:

ReactDOM.render(
  React.createElement(
    Hello,
    {name: 'Button'},
    React.createElement(
      'div',
       null,
       `Hello ${this.props.name}`,
    )
  ),
  document.getElementById('root'),
); // 在浏览器中渲染一个简单的 div 元素,显示 Hello Bottle

React.renderReact.createElement 是 React 最核心的 API 方法,每一个 React 项目都必须要引入这两个API。

浏览器不识别 JSX。我们在浏览器中运行 JSX,会报错:

640?wx_fmt=png

JSX

所以,在项目中运用 JSX,我们需要使用像 Babel 或 TypeScript 这样的转换器。例如,当 我们使用 create-react-app 创建项目时,就会在内部使用 Babel 来转换项目

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值