React

简介: 【7月更文挑战第13天】

React 是一个用于构建用户界面的开源JavaScript库,由Facebook维护。它以组件化的方式构建应用程序,使得代码更加模块化、可重用和易于维护。React主要用于构建单页应用程序(SPA)和移动应用的用户界面。

React的核心特性包括:

  1. 组件化:React应用由多个独立、可复用的组件构成,每个组件管理自己的状态。
  2. 虚拟DOM:React为每个DOM对象维护一个轻量级的虚拟DOM副本,当组件状态变化时,React首先在虚拟DOM上进行变化,然后高效地将这些变化应用到实际的DOM上。
  3. 声明式语法:React使用声明式渲染,你只需要描述UI应该呈现的样子,React会负责更新DOM。
  4. 单向数据流:React应用的数据流是单向的,从父组件流向子组件,通过属性(props)传递。
  5. Hooks:React 16.8引入了Hooks,允许在函数组件中使用state和其他React特性。
  6. JSX:React使用JSX语法扩展JavaScript,允许你在JavaScript代码中写类似HTML的标记。

如何使用React:

  1. 设置环境:你可以使用Create React App来快速设置React开发环境。

    npx create-react-app my-app
    cd my-app
    npm start
    
  2. 编写组件:React组件可以是类组件或函数组件。

    • 类组件示例

      import React, { Component } from 'react';
      
      class Greeting extends Component {
        render() {
          return <h1>Hello, {this.props.name}!</h1>;
        }
      }
      
      export default Greeting;
      
    • 函数组件示例

      import React from 'react';
      
      function Greeting(props) {
        return <h1>Hello, {props.name}!</h1>;
      }
      
      export default Greeting;
      
  3. 使用组件:在React应用中,你可以通过<组件名 />的方式使用组件。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import Greeting from './Greeting';
    
    ReactDOM.render(<Greeting name="John" />, document.getElementById('root'));
    
  4. 状态管理:组件可以通过this.setState()(类组件)或useState Hook(函数组件)来管理内部状态。

    • 类组件状态示例

      class Counter extends Component {
        constructor(props) {
          super(props);
          this.state = { count: 0 };
        }
      
        increment() {
          this.setState({ count: this.state.count + 1 });
        }
      
        render() {
          return (
            <div>
              <h1>{this.state.count}</h1>
              <button onClick={() => this.increment()}>Increment</button>
            </div>
          );
        }
      }
      
    • 函数组件状态示例

      import React, { useState } from 'react';
      
      function Counter() {
        const [count, setCount] = useState(0);
      
        function increment() {
          setCount(count + 1);
        }
      
        return (
          <div>
            <h1>{count}</h1>
            <button onClick={increment}>Increment</button>
          </div>
        );
      }
      
  5. 属性传递:父组件通过属性(props)向子组件传递数据。

    function Greeting(props) {
      return <h1>Hello, {props.name}!</h1>;
    }
    
    // 使用组件时传递属性
    <Greeting name="Alice" />
    
  6. 条件渲染:根据条件渲染不同的组件或元素。

    function UserGreeting(props) {
      if (props.isLoggedIn) {
        return <Greeting name={props.name} />;
      } else {
        return <p>Please log in.</p>;
      }
    }
    
  7. 列表渲染:使用map()方法遍历数组,为每项数据渲染元素。

    function ItemList(props) {
      const items = props.items.map((item) =>
        <li key={item.id}>{item.name}</li>
      );
      return <ul>{items}</ul>;
    }
    
目录
相关文章
|
Docker 容器
镜像导出和镜像导入
镜像导出和镜像导入
|
机器学习/深度学习 测试技术
大模型开发:描述交叉验证以及为什么在模型评估中使用它。
【4月更文挑战第24天】交叉验证是评估机器学习模型性能的方法,通过将数据集分成训练集和多个子集(折叠)进行多次训练验证。它能减少过拟合风险,提供更可靠的性能估计,用于参数调优,并减少小数据集或噪声带来的随机性影响。通过汇总多轮验证结果,得到模型的整体性能估计。
632 7
|
2月前
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
569 0
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
2月前
|
人工智能 IDE 程序员
Qoder 负责人揭秘:Qoder 产品背后的思考与未来发展
Qoder是阿里巴巴推出的Agentic编程平台,致力于引领AI编程新范式。它通过Spec驱动开发、云端沙箱与智能体协同,实现AI自主完成复杂研发任务,提升开发者效率1-10倍,推动软件研发进入智能化、异步化新时代。
1050 0
Qoder 负责人揭秘:Qoder 产品背后的思考与未来发展
|
JavaScript 前端开发 应用服务中间件
本地运行打包好的React、Vue项目
本文讨论了如何本地运行打包好的React和Vue项目,并解决了使用React-Router时Tomcat部署刷新页面导致404的问题,提出了将请求转回index.html的解决方案。
405 1
本地运行打包好的React、Vue项目
|
分布式计算 算法 大数据
大数据数据一致性
【10月更文挑战第24天】
317 4
|
SQL 关系型数据库 MySQL
(二十五)MySQL主从实践篇:超详细版读写分离、双主热备架构搭建教学
在上篇《主从原理篇》中,基本上把主从复制原理、主从架构模式、数据同步方式、复制技术优化.....等各类细枝末节讲清楚了,本章则准备真正对聊到的几种主从模式落地实践,但实践的内容通常比较枯燥乏味,因为就是调整各种配置、设置各种参数等步骤。
1559 4
|
开发工具 Android开发 git
解决Idea报错出现Git is not installed
解决Idea报错出现Git is not installed
5111 2
|
JavaScript
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)
467 0
|
定位技术
GIS空间分析 网络分析2规划最佳路径
在本文中,你将学习到ArcGIS中 网络分析2规划最佳路径的详细过程
302 0