React入门 - 04(从编写一个简单的 TodoList 说起)
继上一节我们已经对
React组件和 ”JSX语法“有了大概的了解,这一节我们继续在react-demo这个工程里编写代码。这一节我们来简单实现一个TodoList来更加了解编写组件的一些细节。
1、在编辑器中打开 react-demo这个工程
2、打开 index.js文件,将组件 App改为 TodoList,挂载的地方同样进行此修改。
import React from 'react';
import ReactDOM from 'react-dom/client';
import reportWebVitals from './reportWebVitals';import TodoList from './TodoList'; const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<React.StrictMode><TodoList /></React.StrictMode>
);reportWebVitals();
3、在src文件下新建 TodoList.js文件,内容编写如下
import React, { Component } from "react";class TodoList extends Component{render() {return (<div>todolist 内容</div>)}
}export default TodoList
4、运行下工程,可以看到网页的内容如下

5、我们继续实现 TodoList功能:界面有一个输入框和一个提交按钮,在输入框里输入内容,点击”提交“按钮后,内容就会以列表的形式展示在界面 input框下面。
6、根据功能要求,我们继续编写 TodoList组件代码
import React, { Component } from "react";class TodoList extends Component{render() {return (<div><input /><button> 提交 </button></div><ul><li>React 入门-01</li><li>React 入门-02</li><li>React 入门-03</li></ul>)}
}export default TodoList
7、运行代码时报错如图。

8、为什么报错呢?答案:因为”JSX语法“要求我们在写 HTML标签时,最外层有且只能有一个 <div>标签来对所有标签进行包裹。所以将代码改正一下
import React, { Component } from "react";class TodoList extends Component{render() {return (// 外层有且只能有一个 div 标签对所有标签进行包裹!<div><div><input /><button> 提交 </button></div><ul><li>React 入门-01</li><li>React 入门-02</li><li>React 入门-03</li></ul></div>)}
}export default TodoList
9、关于”JSX“外层有且只能有一个 <div>包裹。细心的你们一定会发现这个 <div>会实实在在的显示在了 DOM 结构上,但有的时候我们并不希望有这个多余的节点出现,这个又怎么进行解决呢?

10、在 React 16版本里,React提供了一个名为 Fragment的占位符来解决这个问题。也就是说,我们可以从 react中引入这个 Fragment,然后使用 <Fragment>来 代替最外层的 <div>元素
// 引入 Fragment
import React, { Component, Fragment } from "react";class TodoList extends Component{render() {return (// 使用 Fragment 代替 div<Fragment><div><input /><button> 提交 </button></div><ul><li>React 入门-01</li><li>React 入门-02</li><li>React 入门-03</li></ul></Fragment>)}
}export default TodoList
11、再次观察 DOM 结构,就会发现顶级 <div>的问题就解决了

到此,本章的内容就结束了!
相关文章:
React入门 - 04(从编写一个简单的 TodoList 说起)
继上一节我们已经对 React组件和 ”JSX语法“有了大概的了解,这一节我们继续在 react-demo这个工程里编写代码。这一节我们来简单实现一个 TodoList来更加了解编写组件的一些细节。 1、在编辑器中打开 react-demo这个工程 2、打开 index.js文件,将组件 …...
EDM群发的优势
在当今这个数字化的时代,电子邮件营销(EDM)已经成为企业与客户沟通的重要手段。相较于传统的营销方式,EDM群发具有许多独特的优势,使其在商业竞争中占据了不可替代的地位。 首先,EDM群发具有精准的目标定位…...
AI对决:ChatGPT与文心一言的深度比较
. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…...
在国产操作系统下管理Oracle数据库
Oracle公司是全球最大的信息管理软件及服务供应商,其开发的数据库产品因性能卓越而闻名,占有最大的市场份额,被广泛用于各个市场领域。 然而在信创化的时代,国产操作系统已然是大势所趋,但是由于历史原因,…...
RTSP/Onvif安防视频监控平台EasyNVR漏洞扫描及解决方法
视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。安防视频监控平台可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频…...
Ovtio不同版本下载
关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...
【MATLAB】Linux版本 高分辨率屏 调整显示缩放
0 引言 安装了linux版本的MATLAB R2023b之后,发现工具栏字体很小不方便使用,所以上网找到了MATLAB论坛上某位大佬的教程:参考链接,放在这里供各位参考 。 1 环境 这里注明我的matlab安装环境仅供参考,未在其他环境下…...
windows系统中,通过LOAD到入csv格式的文件到neo4j中,如何写文件路径
在Neo4j中,使用LOAD CSV语句导入CSV文件时,需要确保你的文件路径是正确的。如果你使用的是Neo4j Desktop或者Neo4j Server,通常需要将CSV文件放在特定的导入目录下。 例如,如果你使用的是Neo4j Desktop,通常会有一个默…...
斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章
第十五章:比较均值 原文:statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者:飞龙 协议:CC BY-NC-SA 4.0 我们已经遇到了许多情况,我们想要询问样本均值的问题。在本章中,我们…...
C# 关于当ObservableCollection增删查改元素时,触发事件用例
ObservableCollection 类提供了一种实时监测集合变化的机制,可以通过订阅 CollectionChanged 事件来响应集合的添加、移除和重置等变化。 using System; using System.Collections.ObjectModel; using System.Collections.Specialized;class Program {static void …...
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步:安装 SQL Server 数据库 这是一个很详细的安装教程,可以参考一下 安装SQL Server详细教程 需要注意:安装实例时,建议在‘身份验证模式’直接选择“混合模式”…...
树形+表单的封装+查重数组
一.树形结构的处理 后端传过来的数据,可能是平铺的一个结构: 在财务部下面,有财务核算部,薪资管理部,我们需要将平铺的数据通过递归转化成: 转换成有children的形式,来渲染到页面上去,在这里用到了作用域插槽,具体怎么使用,可以通过查看文档…...
laravel 中间件记录日志
前提 我希望通过中间件记录用户的请求数据、我的返回数据,如果出现异常捕获异常。 代码 路由文件:追加中间件api-logging,用于记录日志 Route::prefix(api)->middleware([api, api-logging])->group(function () {...路由内容 });n…...
Pandas十大练习题,掌握常用方法
文章目录 Pandas分析练习题1. 获取并了解数据2. 数据过滤与排序3. 数据分组4. Apply函数5. 合并数据6. 数据统计7. 数据可视化8. 创建数据框9. 时间序列10. 删除数据 代码均在Jupter Notebook上完成 Pandas分析练习题 数据集可从此获取: 链接: https://pan.baidu.co…...
CMake TcpServer项目 链接静态库/动态库
一、链接静态库 查看项目结构 hehedalinux:~/Linux/LinuxServerCpp-Link$ tree . ├── CMakeLists.txt ├── include │ ├── common │ │ ├── Buffer.h │ │ ├── Channel.h │ │ └── Log.h │ ├── http │ │ ├── HttpRequest…...
uint32无符号字节转为Java中的int
文章目录 前言一、无符号字节转为int1.前置知识2.无符号转int代码3.Java中字节转为int 二、字节缓冲流1.基础知识2.String与ByteBuffer转换 总结 前言 Java 中基本类型都是有符号数值,如果接收到了 C/C 处理的无符号数值字节流,将出现转码错误。 提示&a…...
Python网络爬虫进阶:自动切换HTTP代理IP的应用
前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先…...
vivado 使用IP Integrator源
使用IP Integrator源 在Vivado Design Suite中,您可以在RTL中添加和管理IP子系统块设计(.bd)项目或设计。使用Vivado IP集成程序,您可以创建IP子系统块设计。IP集成程序使您能够通过实例化和将Vivado IP目录中的多个IP核互连。可…...
【Mybatis系列】Mybatis空值关联
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
计算机组成原理 运输层
文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…...
构建多智能体系统时如何通过统一网关管理不同模型的调用与鉴权
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建多智能体系统时如何通过统一网关管理不同模型的调用与鉴权 在开发集成多个AI智能体的复杂系统时,工程师常常面临一…...
如何用DeepL Chrome翻译插件打破语言障碍:从安装到精通的完整指南
如何用DeepL Chrome翻译插件打破语言障碍:从安装到精通的完整指南 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 你是否经常遇到需要阅读外文网页却苦…...
跨平台资源下载终极指南:轻松获取视频号、抖音、直播流等全网资源
跨平台资源下载终极指南:轻松获取视频号、抖音、直播流等全网资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …...
5分钟学会使用CompressO:免费开源视频压缩神器终极指南
5分钟学会使用CompressO:免费开源视频压缩神器终极指南 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO …...
题解:AcWing 271 杨老师的照相排列
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...
终极免费色彩校准方案:用novideo_srgb解决NVIDIA显卡广色域显示器色彩过饱和问题
终极免费色彩校准方案:用novideo_srgb解决NVIDIA显卡广色域显示器色彩过饱和问题 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirro…...
终极模组管理指南:XXMI启动器让你的米哈游游戏体验提升10倍
终极模组管理指南:XXMI启动器让你的米哈游游戏体验提升10倍 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款专为米哈游系列游戏设计的开源模组管理平…...
阴阳师自动化脚本终极指南:一键解放双手的智能游戏助手
阴阳师自动化脚本终极指南:一键解放双手的智能游戏助手 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师中重复繁琐的日常任务而烦恼吗?每天需…...
别再抄网上报错的代码了!手把手教你用Python搞定波士顿房价预测(附数据集下载)
从零构建波士顿房价预测实战指南:避开99%初学者踩过的坑第一次运行波士顿房价预测代码时,我也遇到了那个经典的报错——load_boston()函数突然失效。这就像准备大展拳脚时发现工具箱被锁住,特别是当截止日期临近,那种焦虑感尤为真…...
驳AGI学习不可行论:数据分布与归纳偏置是理论证明的关键
1. 项目概述:当复杂性理论遇上AGI学习的“不可能性”证明最近在AI理论圈子里,一篇题为《Reclaiming AI as a theoretical tool for cognitive science》的论文(简称[VRGA24])引起了不小的波澜。这篇论文的核心主张相当大胆&#x…...
