【react全家桶学习】如何创建一个react组件(超详)

news2024/12/24 2:25:07

前提是你安装了react脚手架,不会的看这里,然后再进行创建哦~

【react全家桶学习】初始化react脚手架及项目结构讲解_suoh's Blog的博客-CSDN博客

目录

问题1:如何创建一个简单的hello组件?

问题2,如果组件特别多怎么办,直接放到src下面显得杂乱无章。如何处理?

问题3:如何添加样式?

问题4:当component组件越来越多的时候,所有组件的js和css混合在一起,显得非常乱,如何处理?

问题5:react中组件的js文件和纯函数js文件,都是以js结尾,如何区分?

问题6:我们可以看到在app.js文件中引入组件的时候比较麻烦,重复的名称较多,如何处理?

问题7:当两个组件中含有相同class名称时,同时在app.js中引入,会发生样式冲突,如何解决?

问题8:我们在编写一个组件时,我们每次都需要手动去引入react库,然后用class类定义组件,相当麻烦,如何解决?


问题1:如何创建一个简单的hello组件?

1、定义一个hello.js

// 引入react库,创建“外壳”组件app
import React, { Component } from "react";
// 定义hello组件并暴露
export default class Hello extends Component {
      render() {
            return <h3>hello,这是我的 第一个react组件!</h3>
      }
}

 2、在app.js中引入

看效果 

 

问题2,如果组件特别多怎么办,直接放到src下面显得杂乱无章。如何处理?

答:创建一个components文件夹,将react组件统一放到该文件夹下。

    

同时引入的路径也需要修改一下

 问题3:如何添加样式?

新建一个css文件
   

 然后在hello.js中引入,注意引入css的时候后缀名不可省略,只有 js 或 jsx 文件可以省略后缀

 

 因此应该这样引入hello.css,上面是错误的引入

 问题4:当component组件越来越多的时候,所有组件的js和css混合在一起,显得非常乱,如何处理?

 答:可以在components中再次创建子文件夹Hello,将hello组件相关的js和css放入。文件名最好大写,代表他是一个组件,这样就方便多了,我们可以创建多个文件夹来管理多个组件

 问题5:react中组件的js文件和纯函数js文件,都是以js结尾,如何区分?

方式(1):命名,将组件js文件的首字母大写,代表组件js

方式(2):后缀名,可以直接将组件的js文件后缀名改为jsx,当然引入的时候js和jsx后缀都可以省略

 问题6:我们可以看到在app.js文件中引入组件的时候比较麻烦,重复的名称较多,如何处理?

 很简单,改名,统一将文件夹下面的组件名改为index

此时引入的时候就可以省略index,简洁了很多、

 问题7:当两个组件中含有相同class名称时,同时在app.js中引入,会发生样式冲突,如何解决?

首先我们再创建一个Test组件

 和hello组件一样同样加上class名为title的样式,定义为黄色

  

 在app.js中引入

 保存看下效果,我们看到两个组件的背景色变成一致了,优先使用的后引入的 class名称的样式

 

 如何解决?这就涉及到了样式冲突的问题。

方式(1):可以直接将hello组件的css名称命名为index.module.css

那么引入的时候方式就变了,使用时也需要注意

刷新之后就正常了

 

方式(2):使用less,给每个组件都定义一个总的class名,然后嵌套编写样式即可,当然实际开发中还是第二种方式用的多,第一种相对繁琐。

.hello {
  .title {
  	background: red;
  }
}

问题8:我们在编写一个组件时,我们每次都需要手动去引入react库,然后用class类定义组件,相当麻烦,如何解决?

答:安装一个vsocde插件,在vscode中搜索

 安装好之后,敲 rcc(react class component 表示react中的类式组件) 就可以出现类式组件模板

 回车之后修改一下组件名即可

 

 敲 rfc(react function component 表示react中的函数式组件)

 

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

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

相关文章

庚顿数据正式发布军工版实时数据库庚金3.0,鼎力支撑中国国防数字化

庚金实时数据库管理系统是北京庚顿数据科技有限公司旗下自主知识产权的军工级产品&#xff0c;可有效满足特种行业自主产权、高性能、高安全、高稳定等高端需求&#xff0c;轻松实现海量实时数据高频采集、海量存储等应用场景&#xff0c;切实保障了客户生产活动的稳定运行。庚…

c/c++:数组做函数参数,传入函数的首地址,相当于传址,指针做函数返回值,数组止做c语言中函数的返回值

c/c:数组做函数参数&#xff0c;传入函数的首地址&#xff0c;相当于传址&#xff0c;指针做函数返回值&#xff0c;数组禁止做c语言中函数的返回值 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0…

Python小姿势 - Python基础知识

Python基础知识 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 Python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;&#xff0c;于1989年底发布第一个公开发行版本——0.9.0。 自2004年以来&#xff0c;Python已经成为顶级开源项目&…

从浏览器地址栏输入 url 到显示主页的过程?

当在浏览器地址栏输入一个URL并按下回车键后&#xff0c;发生了一系列复杂的过程&#xff1a; DNS解析&#xff1a;浏览器会对输入的URL进行DNS解析&#xff0c;将域名转换为服务器的IP地址。这一过程包括浏览器缓存、操作系统缓存、本地HOST文件配置、本地DNS服务器以及远程DN…

多通道振弦传感器无线采集仪 数据发送详解

多通道振弦传感器无线采集仪 数据发送过程 每次采集仪启动后会将采集到的传感器数据进行内部存储&#xff0c;并在设置好的时间间隔将数据发送出去&#xff0c;通过修改“数据发送方式”参数&#xff0c;监测数据可由数据接口输出也可经由无线网络发送。 在发送监测数据时&…

SpringCloud --- Nacos注册中心、配置管理

一、Nacos注册中心 1.1、认识和安装Nacos Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 1.2、服务注册到nacos Nacos是SpringCloudAlibaba的组件&#xff0c;而SpringCloudAlibaba也遵循Spr…

3dtiles之点云pnts文件详解

3DTiles是一种用于在WebGL环境中渲染大规模三维地理数据的规范&#xff0c;它允许开发者将复杂的三维数据以高效的方式传输、存储和呈现。而PNTS格式则是3DTiles规范中用于存储点云数据的格式之一。在本文中&#xff0c;我们将探讨3DTiles和PNTS的基本原理以及它们如何用于处理…

集成学习(Ensembles)

Ensembles 前言EnsemblesAveraging,StackingWhy does averaging work?如何理解&#xff1a;In practice errors won’t be completely independent due to noise in the labels Random ForestsDoes averaging work if you use trees with the same parameters?Bootstrap Samp…

【AgentGPT】网页版的 Auto-GPT,让 AI 成为我们的生产力工具

在上一篇文章笔者分享了 Auto-GPT 的安装&使用,不过因为操作相对繁琐,可能会导致许多想使用工具的人卡在环境的设定上。 所以这边再介绍另一款无需安装,可直接使用的工具“AgentGPT”;他的操作超级简单,只要设定好目标(Goal),一键发送即可! 大纲 ▋ 如何免费使用 A…

【C++】计算类的大小

目录 简介计算类的大小场景1&#xff1a;空类场景2场景3&#xff1a;含有虚函数场景4&#xff1a;继承场景5&#xff1a;存在字节对齐的情况 总结结语 简介 Hello&#xff01; 非常感谢您阅读海轰的文章&#xff0c;倘若文中有错误的地方&#xff0c;欢迎您指出&#xff5e; …

Linux多媒体子系统02:V4L2核心框架分析(部分)

目录 1 V4L2框架结构概述 1.1 imx8视频输入通路硬件结构 1.2 V4L2设备节点观察 1.3 dts配置观察 1.4 probe函数观察 1.4.1 函数功能简介 1.4.2 各模块probe函数分析 1.5 V4L2框架结构图示 2 设备管理机制 2.1 v4l2_device结构体相关 2.1.1 v4l2_device结构体 2.1.2…

15.Java多线程

目录 1. Java基本介绍 2. JDK下载安装及其环境配置 3. 一个简单的java程序 4. Eclipse基本使用、数据类型、运算符 5. 控制语句&#xff08;if、switch、for、while、foreach&#xff09; 6. Java数组 7. Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner…

教你如何免费使用ChatGPT 4?(国内可以直接访问,不用魔法)

目录 一. 内容介绍 二. 功能介绍 三. 优势 四. 版本比较 五. 国内试用方法 内容介绍&#xff1a; ChatGPT 4是由OpenAI开发的最新一代大型语言模型&#xff0c;其采用了GPT-3.5的技术架构&#xff0c;是目前全球最强大的通用AI模型之一。ChatGPT 4拥有极高的语言处理能力和…

SD卡恢复怎么做?内存卡数据恢复,3个方法!

案例&#xff1a;sd卡怎么恢复&#xff1f; 【我的sd卡用了快一年了&#xff0c;里面存储了很多非常重要的文件&#xff0c;但不知道为什么我今天将它插入电脑后&#xff0c;很多文件都无法显示了&#xff0c;大家有什么好的方法可以恢复sd卡吗&#xff1f;感谢回答&#xff0…

【翻译一下官方文档】之uniapp的导航条设置

目录 uni.setNavigationBarTitle(OBJECT) uni.setNavigationBarColor(OBJECT) uni.hideHomeButton(OBJECT) uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。 OBJECT参数说明 参数类型必填说明titleString是页面标题successFunction否接口调用成功的回调函数fai…

安虚拟机详细教程 VMware虚拟机与主机之间不能复制粘贴及拖拽问题

VMware虚拟机中安装Ubuntu18.04&#xff08;linux发行版&#xff09;【超详细图文教程】_vmware安装ubuntu18.04__7270的博客-CSDN博客 1. 查看vmware Tools是否安装 打开虚拟机 &#xff0c;点击上方导航栏 ‘虚拟机’ 查看VMware Tools是否安装&#xff0c;如果未安装&#…

Linux和shell命令第一节课

windows开发 linux服务 区块链&#xff0c; 稳定&#xff0c;安全&#xff0c;可移植性&#xff0c;低资源消耗&#xff0c;开源软件---windows付费 linux就是操作系统&#xff0c;网络服务&#xff0c;移动设备&#xff0c;嵌入式系统&#xff0c;计算器服务器 除个人桌面…

Sentinel:服务限流

文章目录 创建工程测试工程流控熔断热点授权规则系统规则SentinelResource 配置持久化执行流程 创建工程测试工程 1.导入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><v…

开放原子训练营第三期:RT-Thread 学习有感

介绍 前几天有幸收到C站的训练营学习邀请&#xff0c;了解到这两天即将举行的开放原子 RTT 训练营。博主算是一名嵌入式方向的小白&#xff0c;主要还是在裸机上进行开发&#xff0c;但对嵌入式的操作系统和实时系统很感兴趣。在这次学习训练营中借助一些学习示例&#xff0c;…

【Linux】 1.2基本指令-part 2

文章目录 07. man指令08.cp指令(copy)&#xff08;重要&#xff09;09.mv指令(move)&#xff08;重要&#xff09;10.cat指令- 补充&#xff1a;echo 与 >11.more指令12.less指令&#xff08;重要&#xff09;13.head指令14.tail指令- 补充&#xff1a;管道 07. man指令 ma…