码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • React学习笔记二


    目录

    React组件

    一、两种创建方式

    函数组件

    类组件

    二、将组件放在独立的js文件中

    三、组件的样式

    四、ref 获取 dom

    五、列表渲染(一中有记,这里就省略) 

    六、条件渲染

    七、事件处理

    八、状态 state 

    组件中的数据

    九、属性props(只读)

    state是内部属性,props是为了更好地实现复用性,从外部接收数据。

    十、生命周期(钩子函数)

    初始化阶段

    1、componentWillMount

    2、render

    3、componentDidMount

    运行中阶段

    1、componentWillReceiveProps(nextProps)

    2、shouldComponentUpdate(nextProps,nextState)

    3、componentWillUpdate

    4、render 同初始化中的render

    5、componentDidUpdate(preProps,preState,value)

    销毁阶段

    1、componentWillUnmount


    React组件

    组件介绍:组件化概念、代表页面中的某部分及功能、独立可复用

    一、两种创建方式

    函数组件

    1、使用JS函数创建的组件

    2、函数名必须大写开头

    3、组件必须有返回值

    例如:

    1. function Hello() {
    2. return (
    3. <div>333333div>
    4. )
    5. }
    6. ReactDOM.render(<Hello/>,document.getElementById("root"))

    类组件

    1、类名大写开头

    2、类组件应继承 React.Component 父类

    3、类组件必须提供 render() 方法

    4、render() 必须有返回值

    例如:

    1. class Ok extends React.Component {
    2. render() {
    3. return (
    4. <div>okdiv>
    5. )
    6. }
    7. }
    8. ReactDOM.render(<OK/>, document.getElementById("root"))

    二、将组件放在独立的js文件中

    步骤:

    1、创建组件js文件,eg: Book.js;

    2、在Book.js文件中导入React;

    3、实用类或者函数创建组件;

    4、组件必须要导出才能使用;

    5、在指定的文件中导入Book.js;

    6、渲染组件。

    例如:

    Book.js

    1. // Book.js
    2. import React from 'react'
    3. class Book extends React.Component {
    4. render() {
    5. return(
    6. <h1>读书明智h1>
    7. )
    8. }
    9. }
    10. // 导出
    11. export default Book

    index.js

    1. import Book from './Book'
    2. ReactDOM.render(<Book/>,document.getElementById("root"))

    三、组件的样式

    1、行内样式

    2、外部导入

    (1)准备好外部 CSS 文件,在 js 中使用import引入

    注意:class属性建议写为className

    四、ref 获取 dom

    <p ref='myword'>你好p>

    可以通过 this.refs.myword 获取p标签

    注:refs 将要被弃用,在严格模式下会报错

    新写法:

    1. myRef = React.createRef();
    2. <div ref={this.myRef}>div>

    如果 ref 绑定到组件上,我们会获得这个组件。

    五、列表渲染(一中有记,这里就省略) 

    六、条件渲染

    1、{ 条件 ?

    yes

    :

    no

    }

    2、{ 条件 &&

    ok

    }

    七、事件处理

    1、事件绑定

    on+事件名称={fn}   注:这里要用驼峰命名法

    例如:

    1. <button onClick={()=>{
    2. console.log(this);
    3. }}>1button>

    八、状态 state 

    设置 state 的组件称之为有状态组件,没有设置 state 的组件称之为无状态组件。

    组件中的数据

    例如:

    1、

    1. class A extends Component {
    2. state = {key:value}
    3. }

    2、

    1. class A extends Component {
    2. constructor() {
    3. super();
    4. this.state = {
    5. key: value
    6. }
    7. }
    8. }

    注意:

    (1)在类中定义 state (只能写这个名字)  对象--------state = {key:value};

    (2)不要直接修改 state : this.state.ok='ok' -------- 使用setState({key:value})

    (3)setState注意:

    在同步逻辑中,异步更新状态与真实dom;

    在异步逻辑中,同步更新状态与真实dom;

    接受第二个参数,是个回调函数,在这里状态与dom更新完毕。

    九、属性props(只读)

    state是内部属性,props是为了更好地实现复用性,从外部接收数据。

    1、某组件:

    1. {/*属性*/}
    2. <MyNav title={this.title} leftBtn={isShowLeft}/>

    2、MyNav.js:

    1. render() {
    2. let {title,leftBtn} = this.props;
    3. return (
    4. <div>
    5. {leftBtn && <button>leftbutton>}
    6. <p>{title}p>
    7. div>
    8. )
    9. }

     属性验证:

    1. import myprop from 'prop-types'
    2. static propTypes = {
    3. title:myprop.string,
    4. leftBtn:myprop.bool
    5. }

    默认属性:
     

    1. static defaultProps = {
    2. title:'标题'
    3. }

     属性与状态总结:

    (1)属性是父组件对子组件的数据传输与操作;

    (2)状态是组件自己内部的数据。

    十、生命周期(钩子函数)

    只有类组件(函数组件需要hooks支持)

    初始化阶段

    1、componentWillMount

    组件即将挂载,render 之前最后一次修改 state 的机会;

    常用于:state的初始化;

    备注:如果有警告,可使用 UNSAFE_componentWillMount ;

    2、render

    只能访问 props 于 state ,不能修改 state 及进行 dom 输出;

    3、componentDidMount

    成功执行完毕 render 并完成 dom 节点的渲染,可以对dom 进行修改;

    常用于:axios请求,订阅函数调用,计时器,dom操作;

    运行中阶段

    1、componentWillReceiveProps(nextProps)

    父组件修改属性触发;

    最先获取父组件传来的属性,可以在这里进行 axios 请求或者其他逻辑处理;

    备注:如果有警告,可使用 UNSAFE_componentWillReceiveProps ;

    2、shouldComponentUpdate(nextProps,nextState)

    返回false,会阻止render的调用;

    参数是被修改之后新的属性及状态;

    3、componentWillUpdate

    组件将要更新,不能修改属性及状态;

    备注:如果有警告,可使用 UNSAFE_componentUpdate ;

    4、render 同初始化中的render

    5、componentDidUpdate(preProps,preState,value)

    可以修改 dom;

    参数是被修改之前的属性及状态;

    销毁阶段

    1、componentWillUnmount

    再删除组件前进行清理工作。

     

  • 相关阅读:
    【重点文章】服务升级惨痛教训
    php mysql 后台 操作
    怎么从三菱PLC FX3U去采集数据?
    X3DAudio1_7.dll丢失原因,X3DAudio1_7.dll丢失怎样解决分享
    dubbo 服务跟踪
    C++之#pragma once实例总结(二百四十七)
    字节二面:TCP 为什么要三次握手?
    长短期负荷预测(Matlab代码实现)
    Spring Boot全面总结(超详细,建议收藏)
    WebSocket开发web页面与服务实时通信
  • 原文地址:https://blog.csdn.net/weixin_52993364/article/details/128116725
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号