React入门 组件学习笔记

这篇具有很好参考价值的文章主要介绍了React入门 组件学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目页面以组件形式层层搭起来,组件提高复用性,可维护性

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

目录

一、函数组件

 二、类组件

三、 组件的事件绑定

四、获取事件对象

五、事件绑定传递额外参数

六、组件状态

初始化状态

读取状态

修改状态

七、组件-状态修改counter案例

 八、this问题说明

九、总结 


一、函数组件

目标:能够独立使用函数完成react组件的创建和渲染

函数组件概念:使用JS的函数(或者箭头函数)创建的组件,就叫做 函数组件

函数组件的创建和渲染

//函数组建的创建
//创建
function Hello(){
  return <div>hello这是一个函数组件</div>
}
  1. 组件的名称必须首字母大写,react内部会根据这个来判断是组件还是普通的HTML标签
  2. 函数组件必须有返回值,表示该组件的 UI 结构;如果不需要渲染任何内容,则返回 null
  3. 组件就像 HTML 标签一样可以被渲染到页面中。组件表示的是一段结构内容,对于函数组件来说,渲染的内容是函数的返回值就是对应的内容
  4. 使用函数名称作为组件标签名称,可以成对出现也可以自闭合
//函数组建的创建
//创建
function Hello(){
  return <div>hello这是一个函数组件</div>;
}

//渲染 <Hello/> 自闭和
//    <Hello></Hello>成对

function App() {
  return (
      <div className="App">
        {/*渲染Hello组件 */}
        <Hello/>
        <Hello></Hello>
      </div>
    
  );
}

export default App;

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 二、类组件

能够独立完成类组件的创建和渲染

  1. 类名称也必须以大写字母开头
  2. 类组件应该继承 React.Component 父类,从而使用父类中提供的方法或属性
  3. 类组件必须提供 render 方法render 方法必须有返回值,表示该组件的 UI 结构
// 引入React
import React from 'react'

// 定义类组件
class HelloComponent extends React.Component{
  render(){
    return <div>这是个一个类组件</div>
  }
}

function App() {
  return (
      <div className="App">
        {/*渲染Hello组件 */}
        <Hello/>
        <Hello></Hello>
        <HelloComponent/>
        <HelloComponent></HelloComponent>
      </div>
    
  );
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

三、 组件的事件绑定

前端开发所有交互都是基于事件

语法:

on + 事件名称 ={事件处理程序}

例如  :

function Hello(){
  const clickHandler = () =>{
    console.log('函数组件中的事件被触发了');
  }
  return <div onClick={clickHandler}>hello这是一个函数组件</div>
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

注意,react事件采用驼峰命名法

类组件中例子,注意回调函数的写法,标准写法,实际工作中的写法

class HelloComponent extends React.Component{
  //事件回调函数 类中有写法差别
  //回调函数不加const 这是标准写法,避免this指向问题
  //这样写,回调函数中的this 指向的是当前的组件实例对象
  clickHandler =()=>{
    console.log('类组件中的点击事件触发了');
  }
  render(){
    return <div onClick={this.clickHandler}>这是个一个类组件</div>
  }
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

四、获取事件对象

获取事件对象e只需要在事件的回调函数中补充一个形象e即可拿到

在函数组件中试一下,打印了一个对象,里面很多属性

function Hello(){
  const clickHandler = (e) =>{
    console.log('函数组件中的事件被触发了',e);
  }
  return <div onClick={clickHandler}>hello这是一个函数组件</div>
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 为事件加个跳转

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 右侧打印出,然后原页跳转了

如果只想打印,不想跳转,那就要拿到事件对象e去阻止默认行为

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

五、事件绑定传递额外参数

触发事件传递自定义参数怎么做?

改造事件绑定为箭头函数 在箭头函数中完成参数的传递

1、只需要一个额外参数 {clickHandler}   变成   {()=>clickHandler('自定义参数')}

2、既需要事件对象e也需要额外的参数 {(e)=>clickHandler(e,'自定义参数')}

function Testl(){
  const clickHandler=(msg)=>{
    console.log('函数组件的事件被触发了',msg)
  }
  return <div onClick={()=>clickHandler('this is msg')}>点击这里</div>
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

function Testl(){
  const clickHandler=(e,msg)=>{
    console.log('函数组件的事件被触发了',e, msg)
  }
  return <div onClick={(e) => clickHandler(e,'this is msg')}>点击这里</div>
}

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 类组件的事件绑定

整体和函数组件方式差别不大

唯一需要注意的是 因为处于class类语境下,所定义事件回调函数以及写法有不同

定义的时候: class Fields语法

使用的时候: 需要借助this关键词获取

import React from "react";
class CComponent extends React.Component {
  // class Fields
  clickHandler1 = (e, num) => {
    // 这里的this指向的是正确的当前的组件实例对象
    // 可以非常方便的通过this关键词拿到组件实例身上的其他属性或者方法
    console.log(this);
  };

  clickHandler2() {
    // 这里的this 不指向当前的组件实例对象而指向undefined 存在this丢失问题
    console.log(this);
  }

  render() {
    return (
      <div>
        <button onClick={(e) => this.clickHandler1(e, "123")}>click me 1</button>
        <button onClick={this.clickHandler2}>click me 2</button>
      </div>
    );
  }
}

function App() {
  return (
    <div>
      <CComponent />
    </div>
  );
}

export default App;

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

六、组件状态

学习目标:能够为组件添加状态和修改状态的值

在React hook 出来之前,函数式组件是没有自己的状态的,这里统一通过类组件来学习

初始化状态、读取状态、修改状态、影响视图

初始化状态

  • 通过class的实例属性state来初始化
  • state的值是一个对象结构,表示一个组件可以有多个数据状态
    class Counter extends React.Component {
      // 初始化状态
      state = {
        count: 0
      }
      render() {
        return <button>计数器</button>
      }
    }

    读取状态

  • 通过this.state来获取状态
    class Counter extends React.Component {
      // 初始化状态
      state = {
        count: 0
      }
      render() {
        // 读取状态
        return <button>计数器{this.state.count}</button>
      }
    }

    修改状态

//组件状态 类组件演示
import React from "react"
class TestComponent extends React.Component{
  //1.定义组件状态
  state={
    //这里可以定义各种属性,全是当前组件的状态
    name:'ggbond'
  }
 
//事件回调函数 
changName=()=>{
  //3.修改状态
  //注意不可以直接赋值修改,必须通过一个方法setState
  this.setState(
    {name:'eebond'}
  )
}

  render(){
    //使用状态
    return (
    <div>
      this is TestComponent
      当前name为:{this.state.name}
      <button onClick={this.changName}>修改name</button>
      </div>)
  }
}

//根组件
function App(){
  return (
    <div>
      <TestComponent/>

    </div>
  )
}
export default App

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 点击后 

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

  • 语法
    this.setState({ 要修改的部分数据 })
  • setState方法作用
  1. 修改state中的数据状态      2.更新UI
  • 思想
    数据驱动视图,也就是只要修改数据状态,那么页面就会自动刷新,无需手动操作dom
  • 注意事项
    不要直接修改state中的值,必须通过setState方法进行修改

 总结:

1.编写组件其实就是编写原生类或者函数

2.定义状态必须通过state实例属性的方法提供一个对象,名称是固定的就叫做state

3.修改state中的任何属性 都不可以通过直接赋值 ,必须走setState方法 ,这个方法来自于继承得到

4.这里的this关键词,很容易出现指向错误,注意规范写法

(事件回调函数 类中有写法差别,回调函数不加const 这是标准写法,避免this指向问题,这样写,回调函数中的this 指向的是当前的组件实例对象)

类组件现在很少用,但老项目维护需要,这里是巩固基础

七、组件-状态修改counter案例

//通过类组件修改状态的方式 counter
import React from "react"
class Counter extends React.Component{
  //通过state定义组件状态
  state={
    count:0
  }

  //huitiaohanshu 
  changeCount =()=>{
    //修改state
    //react体系下 ‘数据不可变’ 要setState
    this.setState(
      {count:this.state.count + 1}
    )
  }
    render(){
      return (
      <button onClick={this.changeCount}>{this.state.count}click</button>
      )
    }
}

//根组件
function App(){
  return (
    <div>
      {/*渲染counter */}
      <Counter />
    </div>
  )
}

export default App

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 八、this问题说明

之前,写react很麻烦,需要时刻注意this指向哪里,但现在不是事了,随着js标准的发展,主流的写法已经变成了class fields,无需考虑太多this问题


import React from "react"
//this有问题的写法
class Test extends React.Component{

  constructor(){
    super()
    //用bind强行修正我们的this指向
    //相当于在类组件初始化阶段 就可以把回调函数的this修正到
    //永远指向当前组件实例对象
    this.handler=this.handler.bind(this)
  }
  handler(){
      console.log(this)
      //这里用this.setstate去修改数据还行吗?会报错
      //老辈会这样做 construtor强绑定一个
  }

  render(){
    return (
      <button onClick={this.handler }>click</button>
    )
  }
}

//根组件
function App(){
  return (
    <div>
      <Test/>
    </div>
  )
}

export default App

未修正前:

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 强行修正this指向后:  得到对象

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 还有一个做法

箭头函数


import React from "react"
//this有问题的写法
class Test extends React.Component{

  
  handler(){
      console.log(this)
      
  }

  render(){
    console.log('父函数里的this指向为:',this)
    return (
      //不用constructor修正,直接在时间绑定的位置
      //通过箭头函数 直接沿用父函数中的this指向也是可以的,这里父函数是render
      //那我们的箭头函数中的this直接沿用 也是
      <button onClick={()=> this.handler() }>click</button>
    )
  }
}

//根组件
function App(){
  return (
    <div>
      <Test/>
    </div>
  )
}

export default App

同样出来的也是对象

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

 看下父函数this指向

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

注意

没必要用这两个修正方案,知道有这两个方法就行,只需要记住案例中的标准写法就行 

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享

九、总结 

React入门 组件学习笔记,React入门到跑路,react.js,学习,笔记,经验分享文章来源地址https://www.toymoban.com/news/detail-674808.html

到了这里,关于React入门 组件学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react入门到实战 学习笔记1 搭建

           一个专注于构建用户界面的 JavaScript 库,和vue和angular并称前端三大框架 React有什么特点 1- 声明式UI(JSX) 写UI就和写普通的HTML一样,抛弃命令式的繁琐实现  2- 组件化 组件是react中最重要的内容,组件可以通过搭积木的方式拼成一个完整的页面,通过组件的抽象可以

    2024年02月13日
    浏览(33)
  • React初体验-Hello React的组件化方式-React入门小案例

    接下来我们通过Hello React的案例, 来体验一下React开发模式, 以及jsx的语法 Hello React案例演练 第一步: 先引入React开发依赖 第二步: 这里我们编写React的script代码中,必须添加 type=\\\"text/babel\\\" ,作用是可以让babel解析jsx的语法 第三步: 创建元素渲染到页面 React18之前的做法: 通过 R

    2023年04月08日
    浏览(61)
  • 前端react入门day02-React中的事件绑定与组件

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 React中的事件绑定 React 基础事件绑定 使用事件对象参数  传递自定义参数  同时传递事件对象和自定义参数  React中的组件  组件是什么 React组件 useState  修改状态的规

    2024年02月06日
    浏览(84)
  • 前端react入门day03-react获取dom与组件通信

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 受控表单绑定  React中获取DOM 组件通信 父传子  父传子-基础实现 父传子-props说明 父传子 - 特殊的prop children 子传父  使用状态提升实现兄弟组件通信 使用Context机制跨

    2024年02月01日
    浏览(52)
  • 【react从入门到精通】React父子组件通信方式详解(有示例)

    【分享几个国内免费可用的ChatGPT镜像】 【10几个类ChatGPT国内AI大模型】 【用《文心一言》1分钟写一篇博客简直yyds】 【用讯飞星火大模型1分钟写一个精美的PPT】 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信方式

    2024年02月05日
    浏览(92)
  • 【React学习】React组件生命周期

    在 React 中,组件的生命周期是指组件从被创建到被销毁的整个过程。React框架提供了一系列生命周期方法,在不同的生命周期方法中,开发人员可以执行不同的操作,例如初始化状态、数据加载、渲染、更新等。一个组件的生命周期大致可以分为三个阶段,即组件挂载时,更

    2024年02月12日
    浏览(39)
  • React笔记-React入门

    主要是现在要改一个开源项目,需要学习下React入门,在此记录一下。 React底层核心:react.development.js React操作DOM库:react-dom.development.js 解析ES6语法:babel.min.js React.createElement() //创建元素 如创建一个节点: 如: 或如: 添加Class ES5: ES6: React中组件: 无状态组件(函数式组

    2024年02月13日
    浏览(38)
  • 章节 1:入门React.js -《React.js手把手教程:从初学者到实战高手》- 第一部分:React.js基础

    《React.js手把手教程:从初学者到实战高手》 第一部分:React.js基础 在我们开始探索 React.js 的奇妙世界之前,让我们先来认识一下这个“ 人人都在谈论 ”的家伙。你可以把 React.js 想象成是一个全栈工程师的一大碗甜品,不仅好吃,还可以让你的应用更美味!那么,究竟什么

    2024年02月11日
    浏览(50)
  • React笔记(四)类组件(2)

    一、类组件的props属性 组件中的数据,除了组件内部的状态使用state之外,状态也可以来自组件的外部,外部的状态使用类组件实例上另外一个属性来表示props 1、基本的使用 在components下创建UserInfo组件 在App.jsx中引用组件,并且传递数据到组件的内部 2、props的默认值 React的

    2024年02月09日
    浏览(22)
  • React笔记(三)类组件(1)

    一、组件的概念 使用组件方式进行编程,可以提高开发效率,提高组件的复用性、提高代码的可维护性和可扩展性 React定义组件的方式有两种 类组件:React16.8版本之前几乎React使用都是类组件 函数组件:React16.8之后,函数式组件使用的越来越多 二、组件定义 1、ES6类的回顾

    2024年02月10日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包