首页 > 其他分享 >React技术文档(一)

React技术文档(一)

时间:2023-07-27 15:46:19浏览次数:35  
标签:react DOM 技术 js React 文档 组件 css

React技术文档(一)

安装

  • 全局安装react脚手架
npm i -g create-react-app
  • 查看react安装版本
create-react-app -V
  • 进入目标文件夹下创建react项目
create-react-app myReact

image-20230718173742738

  • 启动项目 注意:启动react需要关闭浏览器的react开发者工具
npm start

image-20230718191511784

  • 解决脚手架安装较慢情况
npm i nrm
nrm ls
nrm use taobao
  • 解决安装脚手架后找不到版本号问题

1.查看系统配置环境变量

2.网络问题---npm 默认镜像为npm源,需切换至taobao镜像

初步认识

  • reacts17版本开始所使用的语言为jsx,jsx语言会自动通过bable语言将其转化为js语言以供浏览器识别,更便于dom节点的渲染操做

​ -- jsx语法

import ReactDOM from "react-dom";
ReactDOM.render(<div class='wrapper'>
  <ul>
    <li>张三丰</li>
    <li>李老四</li>
    <li>王老五</li>
    <li>邹老六</li>
  </ul>
  <div class='text'></div>
</div>,document.querySelector('#root'))

​ -- 浏览器通过bable解析jsx语言之后的语言格式

import React from "react";
import ReactDOM from "react-dom";
ReactDOM.render(React.createElement('div',{class:'content'},'111'),document.querySelector('.text'))

​ -- jsx相较于js语法更加简洁方便,省去引入React文件的步骤,更有利于开发使用

组件的创建

类组件

在src目录下新建js文件

import React from 'react'
class App extends React.Component {
  render(){
    return <div>222</div>
  }
}
export default App

将组件文件导入src目录下的index.js文件中,并使用组件

import App from './01-base/01-class组件'
ReactDOM.render(<App />,document.querySelector('.text'))

函数组件

在src目录下新建js文件

function App(){
    return(
      <div>function 组件</div>
    )
}
export default App 

将组件文件导入src目录下的index.js文件中,并使用组件

import AppFun from './01-base/02-function组件'
ReactDOM.render(<AppFun />,document.querySelector('.text'))

注意:为什么<App />组件在浏览器中被渲染,这期间发生了什么?

1.获取渲染目标节点:

根据ReactDOM.render()执行函数入参所知,通过document.querySelector('.text')获得DOM节点,将此节点作为渲染目标

2.创建虚拟DOM:

根据定义的组件结构,React会创建一个虚拟DOM的对象,此DOM对象的结构和所属属性信息根据所引组件而来

3.虚拟DOM转真实DOM:

通过虚拟DOM树形创建真实DOM节点

4.真实DOM挂载在目标节点上:

并将其插入到之前获取到的渲染节点中,并显示在浏览器中

5.组件生命周期事件触发:

当真实的DOM节点被渲染在浏览器中,React将会自动触发相应的生命周期事件方法

6.更新机制:

当组件状态或其属性发生变化时,React会进行重新渲染过程,生成新的DOM虚拟节点树形对象,再通过内置diff算法进行比较,将发生变化的部分以打补丁的形式重新渲染在浏览器

整个的过程中React高效的更新DOM,实现组件的动态渲染过程

组件的嵌套

通过父组件与子组件嵌套关系实现组件式嵌套开发

import React, { Component } from 'react'
class Child extends Component{
  render(){
    return(<div>child</div>)
  }
}
class NavBar extends Component{
  render(){
    return(
      <div><Child></Child></div>
    )
  }
}
function Swiper(){
  return(<div>Swiper</div>)
}
const Tabbar=()=>{
  return(<div>Tabbar</div>)
}
// 箭头函数的简写形式
// const Tabbar=()=><div>Tabbar</div>
export default class App extends Component {
  render() {
    return (
      <div>
        <NavBar></NavBar>
        <Swiper></Swiper>
        <Tabbar></Tabbar>
      </div>
    )
  }
}

其中App组件中包含三个子组件, 以三种不同的定义方式进行创建,这里需要强调的是:

推荐使用箭头函数形式进行定义,起因于箭头函数的this指向源于外部函数,更加便于我们使用this全局

组件中嵌套组件实现

组件的样式

import React, { Component } from 'react'
import './css/01-css.css'
export default class App extends Component {
  render() {
    var name='yuge'
    var obj={
      backgroundColor:'red'
    }
    return (
      <div>
        <div style={obj}>{20+20}-{name}</div>
        <div className='active'>aa</div>
      </div>
    )
  }
}
.active{
  background:#ccc;
}

效果展示:

image-20230724173744906

注意:为什么css文件在js可以被编译解析呢?

由于前端项目react采用模块化的方法,webPack通过打包处理前端项目源码时,构建工具通过加载器识别并解析各类文件

具体的css文件解析过程:

  • 在webPack中存在多种构建工具的加载器,各类加载器具备不同的功能,当遇到css文件时,通过css加载器随其进行解析处理

  • css加载器会先将css文件解析为样式对象或css字符串,再将其打包进最终的js文件中,注意这里为什么是最终,因为我们在react中的js文件所写为jsx语法,也是需要bable解析为js文件的

  • 在js解析完毕并加载到浏览器中后,之前被解析的样式对象或css字符串会找到相应的元素并进行样式渲染

    这样做的目的:将js和css文件一起进行打包可以更好的管理依赖关系,优化优化加载器的速度的同时提高了项目的可维护性;其次通过在js中去编写css能够实现动态样式操作和样式的模块化管理

标签:react,DOM,技术,js,React,文档,组件,css
From: https://www.cnblogs.com/HongYuLi333/p/17585136.html

相关文章

  • React技术文档(二)
    React技术文档(二)事件绑定事件绑定的写法在react中于需要绑定事件的节点上采用on+事件名驼峰写法定义,如onBluronClickonInput事件命名法importReact,{Component}from'react'exportdefaultclassAppextendsComponent{add=()=>{console.log('add');......
  • 视觉套件专项活动!与飞桨技术专家一起提升技术实力,更多荣誉奖励等你领取
    作为中国最早开源的深度学习框架,飞桨深度践行开源理念,开放拥抱社区,重视生态构建,与开发者和生态伙伴共成长,已成为国内综合竞争力第一的产业级深度学习平台。截至目前,飞桨已凝聚750万名开发者。在飞桨套件的建设中,除了来自百度的工程师外,还汇聚了一批热爱飞桨、热爱开源的开发者,他们......
  • jQuery 打开wode文档
    jQuery打开wode文档什么是jQuery?jQuery是一个快速、简洁、功能丰富的JavaScript库。它通过封装复杂的JavaScript代码,提供了一套简单的API来处理HTML文档操作、事件处理、动画效果、AJAX等各种常见的Web开发任务。jQuery的目标是让Web开发变得更加简单、更加高效。如何使用jQuer......
  • 如何编写难以维护的React代码?耦合组件
    如何编写难以维护的React代码?耦合组件在许多项目中,我们经常会遇到一些难以维护的React代码。其中一种常见的情况是:子组件直接操作父组件方法,从而导致父子组件深度耦合。这样的实现让子组件过于依赖父组件的具体实现细节,使得代码难以维护和扩展。让我们来看一个例子:functionCom......
  • java接口文档示例
    Java接口文档示例及其用途引言在Java开发中,接口文档是非常重要的一部分。它提供了对代码库的详细描述,包括类、方法、参数和返回值等信息。接口文档不仅可以帮助开发人员了解代码库的功能和用途,还可以作为代码库的使用指南,方便其他开发人员快速上手。本文将介绍Java接口文档的示例......
  • react antd5 Warning: Each child in a list should have a unique "key" prop.
    Warning:Eachchildinalistshouldhaveaunique"key"prop.说明:表格数据赋值给一个key值<Tablecolumns={columns}dataSource={data.map((item)=>({...item,key:item.id}))}/>......
  • 莆田洪水预警APP技术支持
    iOS技术支持网址如果您在使用我们的产品时遇到任何问题,请随时与我们联系,我们将全意为您解决。请发送邮箱与我们联系,我们24小时为您服务。邮箱:[email protected]:251893507谢谢!IOSsupportswebaddressesIfyouencounteranyproblemwhenusingourproducts,pleasefeel......
  • 使用EasyExcel异步导出excel技术方案
    主线程:处理请求响应,同时开启子线程,让子线程处理导出任务子线程:将导出的文件写入到磁盘临时文件,临时文件上传到oss中获取上传文件的url路径,记录url路径到数据库中,最后再删除临时文件通过单独一个页面查询导出文件流水的列表,进行下载文件代码实现线程池配置@Componentpublic......
  • 【技术实战】Vue技术实战【三】
    需求实战一效果展示代码展示<template><divstyle="display:flex;"><divstyle="display:flex;justify-content:center;align-items:center;"><labelfor="input"style="font-family:Aria......
  • 在Qt Creator中添加cmake的帮助文档
    下载cmake的QtHelp在cmake官网的说明文档下载页,下载QtHelp在QtCreator添加Cmake的帮助文档依次点击Edit->Preferences->Help->Add然后选择刚刚下载的QtHelp(cmake.qch)即可添加完成后,可以当光标在cmake的命令上时,按F1键可以出现对应的帮助文档......