首页 > 其他分享 >React笔记-组件(一)

React笔记-组件(一)

时间:2023-05-09 21:15:51浏览次数:32  
标签:react return render app 笔记 React 组件

React学习笔记-组件(一未完成)

特点

  • 声明式
  • 组件化
  • 跨平台

React脚手架

a. 全局安装react脚手架 create-react-app

npm install create-react-app -g
&
npx create-react-app my-app

b. 使用create-react-app 创建 react应用,如果直接使用npx则无需执行这一步,直接执行第3步

create-react-app my-app

c. 进入刚创建的目录,然后启动项目,即可看到第一个react页面

# 进入创建的目录
cd my-app

# 启动react
npm run start

组件

react中组件分为两种 1. 类组件 2. 函数组件(hooks组件)

组件定义

1. 类组件

/**
 * 使用es6的module语法引入react
 * 脚手架内置了Babel(Babel 提供一个REPL 在线编译器,可以在线将 ES6 代码转为 ES5 代码)解析工具 尽量使用es6+语法
 */
import React from "react";
/**
 * 导出一个类,类名必须全局唯一
 * 类必须使用class 并且extends继承React.Component
 */
export default class LearnReact extends React.Component {
  /**
   * 1. render函数负责渲染页面
   * 2. render必须有return
   * 3. return里只能写html相关代码 并且用小括号包裹
   * 4. 小括号里只能存在一个根元素
   *      return (<div></div> <div></div>) ×
   *      return (<div> <div><div> <div>) √
   * 5.组件必须有render函数
   * 6. 每次重新渲染都会调用render函数
   */
  render () {
    return (
      // 小括号中可以编写任意html代码
      <div>
        <div>哈喽,react</div>
      </div>
    )
  }
}

函数组件(hooks)

/**
 * 导出方法,方法名全局唯一
 */
export default function LearnFC () {
  /**
   * 想让函数变成一个函数组件
   * 那么就可以直接在函数里面return
   * return的html也只能有一个根节点
   */
  return (
    // 小括号中可以编写任意html代码
    <div>
      <div>react中的函数组件</div>
    </div>
  )
}

使用组件

定义根组件

// index.js入口
import React from "react";
import ReactDOM from "react-dom/client";
/**
 * 使用对应的引入方式 引入组件
 */
import LearnClassComponent from "./learn-class-component";

const root = ReactDOM.createRoot(document.getElementById("root"));

/**
 * 在root.render方法里面
 * 根据<引入的组件>就可以定义我们的根组件
 * 也就是说react中的组件创建完后,就可以使用标签语法来进行使用
 */
root.render(<LearnClassComponent />);
root.render(<LearnClassComponent></LearnClassComponent>);

组件中使用组件

import React from "react";

// 引入LearnFC组件
import LearnFC from "./learn-fc";

export default class LearnClassComponent extends React.Component {

  render () {
    return (
      <div>
        <div>哈喽,react</div>
        {/* 
          react会自动创建一个标签
          我们可以直接使用这个标签当做组件
          并且我们可以多次使用它
        */}
        <LearnFC></LearnFC>
      </div>
    )
  }

}

缺少类组件和函数组件区别 学完hooks之后补

标签:react,return,render,app,笔记,React,组件
From: https://www.cnblogs.com/SpicyPeper/p/17386270.html

相关文章

  • React笔记-事件(三)
    React学习笔记-事件(三)定义事件React元素的事件处理和DOM元素的很相似但是有一点语法上的不同React事件的命名采用小驼峰式(camelCase)而不是纯小写如点击事件onClickimportReactfrom'react'exportdefaultclasslearnEventextendsReact.Component{///......
  • React笔记-样式(二)
    React学习笔记-样式(二)内联样式importReactfrom"react";exportdefaultclassLearnStyleextendsReact.Component{render(){return(<div>{/*以下两种方法都可以一种不用引号将css以小驼峰方式写另一种加上引号写......
  • React笔记-渲染列表Key(五)
    React学习笔记-渲染列表Key(五)渲染列表需要添加key属性importReactfrom"react"exportdefaultclassLearnKeyextendsReact.Component{state={infos:[{name:'Bob',age:18},{name:'kitty',age:20},{name:......
  • React笔记-state(四)
    React学习笔记-state(四)概念state的主要作用是用于组件保存控制以及修改自己的状态它算是组件的私有属性不可通过外部访问和修改只能通过组件内部的this.setState来修改修改state属性会导致组件的重新渲染注意:如果直接通过this.state.xxx的方式修改,组件不会重新渲染,但......
  • 中国剩余定理学习笔记
    给定\(n\)组非负整数\(a_i,b_i\),其中\(b_i\)两两互质,求解关于\(x\)的方程组的最小非负整数解。\(\begin{cases}x\equivb_1\({\rmmod}\a_1)\\x\equivb_2\({\rmmod}\a_2)\\...\\x\equivb_n\({\rmmod}\a_n)\end{cases}\)这样的题怎么做呢?首先给出中......
  • 最小表示法 学习笔记
    描述:给出一个字符串s,将s循环移位若干次之后使得字符串的字典序最小。朴素的思路:对于每一个位置为结果字符串的开头去暴力做。显然最坏复杂度O(|S|^2)于是考虑优化这个过程。假设对于不同的两个下表i和j,如果有s[i,i+1,..,i+k-1]=s[j,j+1,..,j+k-1]和s[i+k]>s[j+k],那这个时候i已......
  • 笔记本自带键盘如何关闭
    左下角搜索栏中搜索cmd,以管理员身份运行在弹出的窗口中将下面这段代码输入进去,并回车。scconfigi8042prtstart=disabled重启,笔记本自带键盘关闭如果想恢复,只要外置键盘以同样方法输入下面这个代码,重启即可。scconfigi8042prtstart=auto......
  • 使用vue的keep-alive缓存组件,三级菜单组件无法缓存问题解决
    使用vue做后台管理系统,需求是所有的菜单打开之后,下次点击的时候的使用缓存,这里很简单的做法就是用来包裹住;但是一级菜单和二级菜单都没有问题,三级菜单就会出现无法缓存的问题,网上找资料说是vue中keep-alive本身存在的缺陷,需要在路由守卫中将matched属性做一下优化,具体如下//......
  • 【笔记】编译原理 - 中
    5语法制导翻译考虑语义分析——为CFG中的文法符号设置语义属性;在语法分析树上,语义属性值用与文法符号所在产生式(语法规则)相关联的语义规则来计算语义规则同语法规则(产生式)相联系,涉及概念:语法制导定义(Syntax-DirectedDefinitions,SDD)语法制导翻译方案(Syntax-Directe......
  • 论文阅读笔记《Training Socially Engaging Robots Modeling Backchannel Behaviors w
    TrainingSociallyEngagingRobotsModelingBackchannelBehaviorswithBatchReinforcementLearning训练社交机器人:使用批量强化学习对反馈信号行为进行建模发表于TAC2022。HussainN,ErzinE,SezginTM,etal.TrainingSociallyEngagingRobots:ModelingBackc......