React 前端框架开发入门案例

以下是一个使用 React 进行前端框架开发的入门案例,实现一个简单的待办事项列表应用。

一、准备工作

  1. 安装 Node.js:React 需要 Node.js 环境来运行。你可以从 Node.js 官方网站下载并安装适合你操作系统的版本。

  2. 创建项目目录:在你的电脑上创建一个新的文件夹,用于存放 React 项目。

  3. 初始化项目:打开终端或命令提示符,进入项目目录,运行以下命令初始化一个新的 Node.js 项目:

    npm init -y
    
  4. 安装 React 和 React DOM:在项目目录中,运行以下命令安装 React 和 React DOM:

    npm install react react-dom
    

二、创建项目结构

  1. 在项目目录中,创建以下文件和文件夹:

    • index.html:HTML 页面文件。
    • src:存放 React 组件的文件夹。
    • src/App.js:主应用组件文件。
  2. index.html 文件中,添加以下内容:

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>待办事项列表</title>
    </head>
    <body><div id="root"></div><script src="./src/index.js"></script>
    </body>
    </html>
    

    这个 HTML 文件创建了一个带有 idroot<div> 元素,用于渲染 React 应用。同时,它引入了一个名为 index.js 的脚本文件,这个文件将是我们的入口文件。

三、创建 React 组件

  1. src/App.js 文件中,创建一个名为 App 的 React 组件:

    import React from 'react';function App() {return (<div><h1>待办事项列表</h1></div>);
    }export default App;
    

    这个组件返回一个包含标题的 <div> 元素。

  2. src/index.js 文件中,引入 React 和 React DOM,并渲染 App 组件到 root 元素:

    import React from 'react';
    import ReactDOM from 'react-dom';
    import App from './App';ReactDOM.render(<App />, document.getElementById('root'));
    

四、添加待办事项功能

  1. App 组件中,添加一个状态来存储待办事项列表和一个输入框的值:

    import React, { useState } from 'react';function App() {const [todos, setTodos] = useState([]);const [inputValue, setInputValue] = useState('');return (<div><h1>待办事项列表</h1><inputtype="text"value={inputValue}onChange={(e) => setInputValue(e.target.value)}/><button onClick={() => {if (inputValue.trim()!== '') {setTodos([...todos, inputValue]);setInputValue('');}}}>添加</button><ul>{todos.map((todo, index) => (<li key={index}>{todo}</li>))}</ul></div>);
    }export default App;
    

    在这个组件中,我们使用 useState 钩子来管理状态。todos 数组存储待办事项列表,inputValue 存储输入框的值。当用户在输入框中输入内容并点击“添加”按钮时,新的待办事项将被添加到列表中。

五、运行项目

在终端或命令提示符中,运行以下命令启动开发服务器:

npm start

这将启动一个本地开发服务器,你可以在浏览器中访问 http://localhost:3000 来查看你的应用。

通过这个简单的案例,你已经初步了解了如何使用 React 进行前端框架开发。随着学习的深入,你可以进一步探索 React 的更多功能和特性,如组件的生命周期、状态管理、路由等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术成神之路:设计模式(二十三)解释器模式

相关文章&#xff1a;技术成神之路&#xff1a;二十三种设计模式(导航页) 介绍 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;用于定义一种语言的文法表示&#xff0c;并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

STM32G4 双ADC模式之同时注入模式

目录 概述 1 认识双ADC模式 2 功能实现 2.1 功能介绍 2.2 实现原理 概述 本文主要介绍STM32G4 双ADC模式之同时注入模式的相关内容&#xff0c;包括ADC模块的功能介绍&#xff0c;实现框架结构&#xff0c;以及注入模式ADC的转换的实现原理。 1 认识双ADC模式 双ADC模式可…

函数与c风格字符串

c风格字符串表达形式 const char* str "mamamiya"; char ghost[] "youpomian"; c风格字符串作为参数 #define _CRT_SECURE_NO_WARNINGS#include <iostream> #include<string>unsigned int c_in_str(const char* str, char ch); int main(…

安卓中ViewModel的常用方法

在安卓中使用ViewModel确实方便很多&#xff0c;可以将数据层和UI层分开&#xff0c;同时还不同担心线程异步和接口异步请求回来 Activity被Finish的情况&#xff0c;同时ViewModel中的数据还可以实现多界面数据共享&#xff0c;甚至使用ViewModel查询数据库&#xff0c;只要数…

java类静态变量初始化在openjdk17源码中体现

##有请志愿者OtherClass.java public class OtherClass {private static int CONSTANT_O9876;public int o1234;public void dddd(){String dddd "dddd";System.out.println(ddddCONSTANT_O);}} 类字节码 Classfile /home/yym/debug-java/OtherClass.classLast m…

Django入门教程——动态表格分页展示数据

第五章 动态表格分页展示数据 教学目的 初步了解layui的使用理解table组件在layui中的应用了解数据添加、删除、编辑操作引入JavaScript框架的优势 layUI动态表格 表格组件 table 是 Layui 中使用率极高的一个组件&#xff0c;它以表格的承载方式对数据进行渲染、重载、排序…

Python数据分析NumPy和pandas(十五、pandas 数据加载、存储和文件格式)

大多数时候&#xff0c;我们要处理分析的数据是存储在不同格式的文件中的&#xff0c;有txt、csv、excel、json、xml以及二进制等磁盘文件格式&#xff0c;还有时候是从数据库以及从Web API中交互获取要处理的数据。现在开始学习如何用pandas从以上内容中输入和输出数据。 读取…

CRC校验 生成多项式选取奇次偶次的问题讨论

目录 问题一&#xff1a;为什么CRC校验码不支持偶次校验码&#xff1f; 问题二&#xff1a;如何判断一个生成多项式是否为偶次多项式&#xff1f; 步骤&#xff1a; 示例&#xff1a; 注意&#xff1a; 问题三&#xff1a;CRC32的生成多项式是什么&#xff1f;是偶次还是…

【小程序上传图片封装2024,支持多图,带进度,上传头像】

import config from ./config;// 支持多图&#xff0c;显示进度 export function uploadImages(count 1, sourceType, onLoading null, showProgress false, fileKey file) {return new Promise((resolve, reject) > {wx.chooseMedia({count: count, // 可以选择的图片数…

Mac上面压缩文件出现__MACOSX文件夹问题

问题 最近需要上传前端zip包&#xff0c;但是&#xff0c;mac右键压缩dist目录的时候&#xff0c;能正常压缩。但是解压这个目录的时候出现了__MACOSX文件夹&#xff0c;是真的坑。 解决 zip -r -X <文件名>.zip <需要压缩的目录>例子如下&#xff1a; zip -r …

Chromium HTML5 新的 Input 类型date 对应c++

一、Input 类型: date date 类型允许你从一个日期选择器选择一个日期。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php"…

Docker 常用命令全解析:提升对雷池社区版的使用经验

Docker 常用命令解析 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析&#xff0c;帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…

python 爬虫 入门 五、抓取图片、视频

目录 一、图片、音频 二、下载视频&#xff1a; 一、图片、音频 抓取图片的手法在上一篇python 爬虫 入门 四、线程&#xff0c;进程&#xff0c;协程-CSDN博客里面其实有&#xff0c;就是文章中的图片部分&#xff0c;在那一篇文章&#xff0c;初始代码的28&#xff0c;29行…

保姆级教程 | 全流程免费:合并多份长宽不同的PDF成相同大小并进行瘦身

背景 由于老板需要&#xff0c;完成不同PDF文件&#xff08;a&#xff0c;b&#xff0c;c....&#xff09;合并&#xff0c;同时要求主文件&#xff08;A&#xff09;小于6M。合并过程中发现各个PDF大小&#xff08;长宽&#xff09;并不相同&#xff0c;造成合并后效果不好也…

如何将 HashiCorp Vault 与 Node.js 集成:安全管理敏感数据

在处理密码、API 密钥或个人用户信息等敏感数据时,安全存储它们至关重要。在源代码中硬编码机密或将其保存在纯文本文件中是一种危险的方法。这就是 HashiCorp Vault 发挥作用的地方。 Vault 是一个用于管理机密(例如凭证、API 密钥和敏感配置)的开源工具。 在本教程中,我将…

Vue3 学习笔记(八)Vue3 语法-Class 与 Style绑定详解

在 Vue.js 中&#xff0c;动态地绑定 CSS 类和样式是一项常见的需求。Vue 提供了几种不同的方法来实现这一点&#xff0c;包括对象语法、数组语法和组件的作用域插槽。 以下是这些方法的详细说明&#xff1a; 一、Class 绑定 1、对象语法 对象语法允许根据表达式的真值动态地切…

java知识管理系统源码(springboot)

项目简介 知识管理系统实现了以下功能&#xff1a; 知识管理系统的主要使用者分为管理员和用户两个角色。管理员功能有个人中心&#xff0c;用户管理&#xff0c;文章分类管理&#xff0c;文章信息管理&#xff0c;资料分类管理&#xff0c;资料下载管理&#xff0c;问答管理…

信捷 PLC C语言 定时器在FC中的使用

传统梯形图的定时器程序写起来简单&#xff0c;本文用C语言写定时器的使用。 定时器在c语言中使用&#xff0c;和普通梯形图中使用的区别之一是既有外部条件&#xff0c;也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…

从JDK 17 到 JDK 21:Java 新特性

JDK17 密封类 概念&#xff1a;密封类允许开发者控制哪些类可以继承或实现特定的类或接口。通过这种方式&#xff0c;密封类为类的继承提供了更高的安全性和可维护性。 定义&#xff1a;使用sealed代表该类为密封类&#xff0c;并用permits限制哪些类可以继承。 public sea…

重写(外壳不变)

重写&#xff1a;是子类对父类非静态、非private修饰、非final修饰、非构造方法等的实现过程进行重新编写返回值和形参都不能改变。 重写的好处&#xff1a;子类可以根据需要&#xff0c;定义专属于自己的行为。&#xff08;子类能够根据需要实现父类的方法&#xff09; 方法…