react学习

【ReactJs学习笔记】【编译生产环境的React应用】 目录 目录 package.json 本地服务器打开编译好的项目 可以快速以当前路径为根目录建立服务的工具pushstate-server 快捷链接 package.json "scripts": { "start": "react-scripts start", "build": "reac 阅读详情

React 是什么?

React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”。

React 中拥有多种不同类型的组件,我们先从 React.Component 的子类开始介绍:

class ShoppingList extends React.Component {
  render() {
    return (
      <div className="shopping-list">
        <h1>Shopping List for {this.props.name}</h1>
        <ul>
          <li>Instagram</li>
          <li>WhatsApp</li>
          <li>Oculus</li>
        </ul>
      </div>
    );
  }
}

// 用法示例: <ShoppingList name="Mark" />

我们马上会讨论这些又奇怪、又像 XML 的标签。我们通过使用组件来告诉 React 我们希望在屏幕上看到什么。当数据发生改变时,React 会高效地更新并重新渲染我们的组件。

其中,ShoppingList 是一个 React 组件类,或者说是一个 React 组件类型。一个组件接收一些参数,我们把这些参数叫做 props(“props” 是 “properties” 简写),然后通过 render 方法返回需要展示在屏幕上的视图的层次结构。

render 方法的返回值描述了你希望在屏幕上看到的内容。React 根据描述,然后把结果展示出来。更具体地来说,render 返回了一个 React 元素,这是一种对渲染内容的轻量级描述。大多数的 React 开发者使用了一种名为 “JSX” 的特殊语法,JSX 可以让你更轻松地书写这些结构。语法 <div /> 会被编译成 React.createElement('div')。上述的代码等同于:

return React.createElement('div', {className: 'shopping-list'},
  React.createElement('h1', /* ... h1 children ... */),
  React.createElement('ul', /* ... ul children ... */)
);

 

安装
        1. 安装脚手架

                 npm i create-react-app -g

        2. 创建项目

                 create-react-app 项目名称 

        3. 启动

                 cd 你的项目 

 

最简易的 React 示例如下:

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

它将在页面上展示一个 “Hello, world!” 的标题。

 

更新已渲染的元素

React 元素是不可变对象。一旦被创建,你就无法更改它的子元素或者属性。一个元素就像电影的单帧:它代表了某个特定时刻的 UI。

根据我们已有的知识,更新 UI 唯一的方式是创建一个全新的元素,并将其传入 ReactDOM.render()。

考虑一个计时器的例子:

function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  ReactDOM.render(element, document.getElementById('root'));}

setInterval(tick, 1000);

 

 

条件渲染

在 React 中,你可以创建不同的组件来封装各种你需要的行为。然后,依据应用的不同状态,你可以只渲染对应状态下的部分内容。

React 中的条件渲染和 JavaScript 中的一样,使用 JavaScript 运算符 if 或者条件运算符去创建元素来表现当前的状态,然后让 React 根据它们来更新 UI。

观察这两个组件:

function UserGreeting(props) {
  return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
  return <h1>Please sign up.</h1>;
}

再创建一个 Greeting 组件,它会根据用户是否登录来决定显示上面的哪一个组件。

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {    return <UserGreeting />;  }  return <GuestGreeting />;}
ReactDOM.render(
  // Try changing to isLoggedIn={true}:
  <Greeting isLoggedIn={false} />,  document.getElementById('root'));

在 CodePen 上尝试

这个示例根据 isLoggedIn 的值来渲染不同的问候语。

元素变量

你可以使用变量来储存元素。 它可以帮助你有条件地渲染组件的一部分,而其他的渲染部分并不会因此而改变。

观察这两个组件,它们分别代表了注销和登录按钮:

function LoginButton(props) {
  return (
    <button onClick={props.onClick}>
      Login
    </button>
  );
}

function LogoutButton(props) {
  return (
    <button onClick={props.onClick}>
      Logout
    </button>
  );
}

在下面的示例中,我们将创建一个名叫 LoginControl 的有状态的组件。

它将根据当前的状态来渲染 <LoginButton /> 或者 <LogoutButton />。同时它还会渲染上一个示例中的 <Greeting />。

class LoginControl extends React.Component {
  constructor(props) {
    super(props);
    this.handleLoginClick = this.handleLoginClick.bind(this);
    this.handleLogoutClick = this.handleLogoutClick.bind(this);
    this.state = {isLoggedIn: false};
  }

  handleLoginClick() {
    this.setState({isLoggedIn: true});
  }

  handleLogoutClick() {
    this.setState({isLoggedIn: false});
  }

  render() {
    const isLoggedIn = this.state.isLoggedIn;
    let button;
    if (isLoggedIn) {      button = <LogoutButton onClick={this.handleLogoutClick} />;    } else {      button = <LoginButton onClick={this.handleLoginClick} />;    }
    return (
      <div>
        <Greeting isLoggedIn={isLoggedIn} />        {button}      </div>
    );
  }
}

ReactDOM.render(
  <LoginControl />,
  document.getElementById('root')
);

在 CodePen 上尝试

声明一个变量并使用 if 语句进行条件渲染是不错的方式,但有时你可能会想使用更为简洁的语法。接下来,我们将介绍几种在 JSX 中内联条件渲染的方法。

与运算符 &&

通过花括号包裹代码,你可以在 JSX 中嵌入任何表达式。这也包括 JavaScript 中的逻辑与 (&&) 运算符。它可以很方便地进行元素的条件渲染。

function Mailbox(props) {
  const unreadMessages = props.unreadMessages;
  return (
    <div>
      <h1>Hello!</h1>
      {unreadMessages.length > 0 &&        <h2>          You have {unreadMessages.length} unread messages.        </h2>      }    </div>
  );
}

const messages = ['React', 'Re: React', 'Re:Re: React'];
ReactDOM.render(
  <Mailbox unreadMessages={messages} />,
  document.getElementById('root')
);

在 CodePen 上尝试

之所以能这样做,是因为在 JavaScript 中,true && expression 总是会返回 expression, 而 false && expression 总是会返回 false。

因此,如果条件是 true,&& 右侧的元素就会被渲染,如果是 false,React 会忽略并跳过它。

三目运算符

另一种内联条件渲染的方法是使用 JavaScript 中的三目运算符 condition ? true : false。

在下面这个示例中,我们用它来条件渲染一小段文本

render() {
  const isLoggedIn = this.state.isLoggedIn;
  return (
    <div>
      The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.    </div>
  );
}

同样的,它也可以用于较为复杂的表达式中,虽然看起来不是很直观:

render() {
  const isLoggedIn = this.state.isLoggedIn;
  return (
    <div>
      {isLoggedIn        ? <LogoutButton onClick={this.handleLogoutClick} />
        : <LoginButton onClick={this.handleLoginClick} />      }
    </div>  );
}

就像在 JavaScript 中一样,你可以根据团队的习惯来选择可读性更高的代码风格。需要注意的是,如果条件变得过于复杂,那你应该考虑如何提取组件。

阻止组件渲染

在极少数情况下,你可能希望能隐藏组件,即使它已经被其他组件渲染。若要完成此操作,你可以让 render 方法直接返回 null,而不进行任何渲染。

下面的示例中,<WarningBanner /> 会根据 prop 中 warn 的值来进行条件渲染。如果 warn 的值是 false,那么组件则不会渲染:

function WarningBanner(props) {
  if (!props.warn) {    return null;  }
  return (
    <div className="warning">
      Warning!
    </div>
  );
}

class Page extends React.Component {
  constructor(props) {
    super(props);
    this.state = {showWarning: true};
    this.handleToggleClick = this.handleToggleClick.bind(this);
  }

  handleToggleClick() {
    this.setState(state => ({
      showWarning: !state.showWarning
    }));
  }

  render() {
    return (
      <div>
        <WarningBanner warn={this.state.showWarning} />        <button onClick={this.handleToggleClick}>
          {this.state.showWarning ? 'Hide' : 'Show'}
        </button>
      </div>
    );
  }
}

ReactDOM.render(
  <Page />,
  document.getElementById('root')
);

掌握ReactJS的学习之路:书籍内容深度解读 本文深入探讨了《The Road to Learn React》一书的内容,包括学习React的最佳实践、社区支持、内容更新、以及如何在学习中提供帮助。书籍强调通过编码实践来掌握React,并随着内容的不断更新,让读者能够跟上React的最新趋势。作者还提倡通过学习React来支持儿童英语教育项目。 阅读详情

相关推荐

工业组态软件Intouch(单机版)入门{第一篇}

通俗来讲Intouch就是一个能将PLC里的信号显示在画面上的软件。

weixin_41571357的博客 1万+

React —— 如何理解条件渲染

条件渲染 在React中,你可以创建不同的组件来封装各种你需要的行为。然后依据应用的不同状态,你可以只渲染对应状态下的部分内容。 React中的条件渲染和javaScript中的一样,使用JavaScript运算符if或者条件运算符去创建元素来表现当前的状态,然后让React根据他们来更新UI。 function UserGreeting(props) { return <h1>Welcome back!</h1>; } function GuestGreeting(pro

qq_41914181的博客 323

实战指南:CentOS 7下VOS3000 8.0从零部署到授权激活全流程

本文提供了一份详尽的CentOS 7系统下部署VOS3000 8.0的实战指南。从环境准备、使用FileZilla上传安装包、执行自动化安装脚本,到获取软件码、利用注册机生成授权文件并激活,手把手带领用户完成从零部署到投入商用的全流程,确保系统稳定运行。

zero1的博客 895

第八章 react前端开发-条件渲染

条件渲染

qq_24430629的博客 408

使用SSE流式输出(Javaweb前后端实战)

SSE(Server-Sent Events)是一种在Web应用中实现单向实时通信的技术。通过SSE,服务器可以主动向客户端发送更新,而无需客户端不断发起请求。这对于需要实时更新的应用场景(如聊天应用、实时数据监控等)非常有用。(服务端单向传输客户端,长连接)

记得开心一点嘛的博客 1万+

Lede(OpenWrt)安装和双宽带叠加

LEDE是一个专为路由器和嵌入式设备设计的自由和开源的操作系统。LEDE是OpenWRT项目的一个分支项目。LEDE操作系统包括许多路由器有用的功能,如网络地址转换、防火墙、端口转发、DHCP服务器等。

我的博客 6441

React条件渲染的几种方式

react中条件渲染三种方式: 使用js运算符if或者条件运算符来表现当前状态,然后让React根据他们来更新UI if (isLoggedIn) { return <UserGreeting />; } return <GuestGreeting />; ​ 根据传入值渲染时: const isLoggedIn = this.state.isLoggedIn; let button; if (isLoggedIn) { but

音音的博客 294

基于 LSTM 的船舶轨迹预测,单步预测

基于 LSTM 的船舶轨迹预测,单步预测

fyuhao的博客 1万+

理解 React 中的条件渲染(Conditional Rendering)

条件渲染意味着基于某些条件,决定某个组件是否渲染,或渲染不同的组件。这在许多使用场景中特别有用,例如根据用户的登录状态显示特定内容,或根据数据的加载状态给用户反馈等。在 React 中,条件渲染主要有三种常见的实现方式:使用 JavaScript 的原生条件语句(如if语句)、逻辑与(&&)运算符和三元运算符(?接下来,我们将逐一介绍这三种方法。

有我更精彩的博客 997

python利用IQR方法与3σ方法进行异常值处理(含代码)

python利用IQR方法进行异常值处理

weixin_46713695的博客 2031

无限泛化!AI背景文字识别,腾讯文字六宫格

本文介绍了生成大规模文字验证码数据集的方法,通过使用上百种字体和2万+字库,结合随机背景和数十种图像增强技术,生成了2000万+的多样化样本。该方法采用二阶段训练策略,确保模型对字体、形态、形变等具有强泛化能力,可适配腾讯、咸鱼等多种平台的文字验证码识别,包括生僻字和复杂形变情况。生成的模型在多种验证码场景下表现优异,但强调该方法仅用于技术研究,严禁非法用途。

码王吴彦祖的博客 562

React 根据状态实现条件渲染

简介 在 React 中,你可以创建不同的组件来封装各种你需要的行为。然后还可以根据应用的状态变化只渲染其中的一部分。 React 中的条件渲染和 JavaScript 中的一致,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI。 // 两个组件 UserGreeting 和 GuestGreeting function ...

教官的博客 1660

热力学仿真软件:ANSYS CFX_(15).旋转机械仿真

创建旋转域在中选择需要设置为旋转域的区域。选择选项。设置旋转速度在设置中,指定旋转速度(单位为弧度/秒)。也可以选择选项,并输入具体值。设置旋转轴在设置中,指定旋转轴的方向和位置。通常旋转轴的方向可以使用单位向量来表示,例如[0, 0, 1]表示沿Z轴旋转。旋转轴的位置可以通过指定一个点的坐标来确定,例如[0, 0, 0]表示旋转轴通过原点。旋转机械的仿真在ANSYS CFX中是一个复杂但重要的过程。

kkchenjj的博客 1157

React学习教程,从入门到精通, ReactJS - 安装:初学者指南(3)

在我们开始安装之前,让我们快速了解一下ReactJS是什么。React是一个流行的JavaScript库,用于构建用户界面,尤其是单页应用程序。它主要是关于创建可重用的UI组件,这些组件管理自己的状态,使得构建复杂的界面变得更加容易。

qq_45746668的博客 2417

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

入门指南:从零开始学习ReactJS

ReactJS是一个强大的JavaScript库,用于构建用户界面。它由Facebook开发,并于2013年首次发布。自那时以来,React已成为前端开发中最受欢迎的库之一,许多公司和开发者都在使用它来构建高性能、交互式的Web应用程序。本文将向您介绍ReactJS的基础知识,并通过实践示例来帮助您入门。我们将从React的核心概念开始,逐步深入,直到您能够构建简单的React应用为止。

努力是为了站在万人之中,成为别人的光 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

从零开始学习ReactJS -- 01 --首先要搭建一个react项目啊!

从头开始学习ReactJS - 01 开始学习第一步 看文档 文档地址:https://react.docschina.org/docs/getting-started.html 主要介绍了ReactJS的基本内容与基本语法 开始按照文档进行搭建 npx create-react-app my-app #my-app 是项目名称 自己定义 下同 cd my-app npm start 执行成功后显示页面 编辑器打开代码查看内容 使用vscode编辑器打开项目 项目目录结构显示 入口文件 src/

GASG的博客 316

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

reactjs 分模块学习

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34072458的博客 161

React学习教程,从入门到精通, ReactJS - 优点与缺点(5)

ReactJS是一个流行的前端框架,具有显著优点和部分缺点。其核心优势包括虚拟DOM技术提升性能、可复用组件提高开发效率、单向数据流简化状态管理,以及庞大的生态系统支持。然而,React也存在学习曲线陡峭、JSX语法带来的困惑、频繁版本更新和文档不完善等问题。开发者应根据项目需求权衡这些特性,合理选择技术栈。React作为强大工具,适合需要高效交互和复杂状态管理的应用场景。

qq_45746668的博客 700

React学习教程,从入门到精通, ReactJS - 特性:初学者的指南(4)

ReactJS是一个用于构建用户界面的JavaScript库,由Facebook于2011年创建。其核心特性包括:1)虚拟DOM实现高效更新;2)JSX语法允许在JavaScript中编写类似HTML的代码;3)组件化架构使代码可重用;4)单向数据流确保应用可预测性;5)Hooks让函数组件拥有类组件功能。React通过虚拟DOM比较算法优化性能,组件化开发提高代码复用性,JSX简化UI编写,单向数据流便于调试,Hooks增强函数组件能力。这些特性使React成为构建现代Web应用的强大工具。

qq_45746668的博客 625

【ReactJs学习笔记】【Chrome安装react审查插件&&组件】

目录 目录 Chrome安装react审查插件 组件 创建并导出组件 引用组件 尝试直接将新组件放置到对应标签 快捷链接 Chrome安装react审查插件 react developer tools拓展安装包下载 ClickHere&amp;amp;gt;&amp;amp;gt; 拖动下载了的.crx文件到拓展程序,显示如下 打开react项目,并用开发者工具,即可看到 ...

m0_37136491的博客 1601

Web前端:开始学习ReactJS需要知道什么?

毫无疑问,ReactJS是前端开发者中最著名的库之一,它的受欢迎程度与日俱增。用ReactJS构建的网站看起来非常棒,大多数开发新手都被它吸引住了。然而,许多新人和有经验的开发人员在没有首先了解先决条件的情况下,就直接用ReactJS是错误的。

yueqian_edu的博客 992

React源码深度解析终极指南:Under-the-hood-ReactJS完整学习路线图

想要真正掌握React的内部工作机制吗?Under-the-hood-ReactJS项目为你提供了完整的React源码学习路径!这个开源项目通过可视化流程图详细解析了React的挂载和更新两大核心流程,让复杂的源码变得清晰易懂。 ## 🎯 项目核心价值 Under-the-hood-ReactJS是一个专门为React开发者设计的源码学习项目。它通过精美的视觉图表,将React的内部架构和运

gitblog_01402的博客 1057

reactJS学习日记——IDEA上的react项目创建

IDEA创建react项目的流程,此文仅以学生角度记录一些操作步骤以及遇到过的问题,以供将来查阅。

rinw20的博客 1914

8月中旬之后的学习计划 --- react

  这段时间快活了,放纵了,玩hi了,接下来该好好的学习新知识了。   鉴于目前业界比较火的前端js框架有react、vue,决定先从react开始学习。之前有简单的接触过它的一些基本的语法知识,这次准备全面的学习一下,从基础到深入,从简单到高级,为期一个半月,每周做好学习笔记,加油!   之后准备学习研究一下nodejs。   reactjs学习资料:   1、基础语法:...

dbl1134的博客 141

reactJS 学习指南——汇总

React学习资源汇总 React是如今最热门的前端框架,它设计思路独特,性能卓越,逻辑简单,受到了广泛开发者的喜爱。一旦接触她,你就会被她深深吸引。 我断断续续的学了将近两个月,今天终于有时间把自己学习React的一些学习资料总结一下。 React 官方 官网地址: http://facebook.github.io/react/ Github地址: ht...

PINGER007的博客 454

ReactJS学习系列课程(React mixin的使用)

React是基于组件的,也就是整个项目是各个组件组合到一起的,这样往往会用到通用的一些特性,这就衍生了mixin的概念。其实,mixin,可以非常简单的理解,他就是把 一个 mixin 对象上的方法都混合到了另一个组件上,和 es6的extend极为类似。在mixin中写的生命周期相关的回调都会被合并,也就是他们都会执行,而不会互相覆盖掉。比如 你在mixin中可以定义 componentDidMo

天外野草技术专栏 3862
上一篇: 百度地图开发者使用教程
下一篇: react路由
ButOf
博客等级 码龄5年 8粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值