react笔记(React18)

以下笔记可能毫无章法,仅供个人学习记录使用。

关于状态提升

状态提升适用于兄弟组件之间传递数据,共享状态,其实就是把两个兄弟组件要共同使用的数据存放到共同的父组件中,称状态提升。

关于context跨层级组件通信:

首先会想,为什么会有这样一个东西?什么时候会用到,跨层架组件通信其实也可以理解为祖先组件和孙组件之间的通信,如果不想使用props层层传递,可能就会使用context. 

代码实现:


import {createContext,useContext} from 'react'
//1. createContext方法创建一个上下文对象
const MsgContext=createContext()
// 2.在顶层组件 通过provider组件提供数据
// 3.在底层组件 通过useContext钩子函数使用数据(这里的参数不用引号,理解为一个定义的变量名)
function B (){
    return (
        <div>
            this is B
            <C/>
        </div>
    )
}
function C (){
    const msg=useContext(MsgContext)
    console.log(msg)
    return (
        <div>
            this is C:{msg}
        </div>
    )
}
export default function Demo (){
    const msg='this is app message'
    return (
        <div>
            <MsgContext.Provider value={msg}>
                this is Demo
                <B/>
            </MsgContext.Provider>
           
        </div>
    )

}

 关于清除副作用

理解什么是副作用,副作用可以理解为useEffect中编写的由渲染本身引起的对组件外部的操作,被称作副作用操作,比如开启了一个定时器,但是在组件卸载之后定时器并不会关闭,这个就是对组件外部的操作,理解为副作用。

   如何使用?:useEffect中会有两个参数,第一个是一个函数,第二个是一个数据对象,清除动作是在第一个参数函数内部return一个箭头函数的方式,这个return的箭头函数作用相当于vue中的组件卸载声明周期函数。

关于封装自定义hook 

代码逻辑具有通用性,和组件耦合在一起时,不方便复用,可以通过封装自定义hook

封装思路:

1.声明一个以use打头的函数

2.在函数体内封装可复用的逻辑(只要是可以复用的)

3.在组件中用到的状态或者回调return出去(以对象或者数组)

4.在那个组件中要用到这个逻辑,就执行这个函数,解构出来状态和回调进行使用

import {useState} from 'react'

function useToggle(){
    // 可以复用的代码逻辑
    const [value,setValue]=useState(true)
    const toggle=()=>setValue(!value)
    // return 其他组件中需要使用到的状态和方法
    return {value,toggle}
}

export default function Demo (){
   const {value,toggle}=useToggle()
    return (
        <div>
           {value&&<div>this is div</div>}
           <button onClick={toggle}>toggle</button>
        </div>
    )

}

关于json-server:

作用:模拟接口数据请求的一个库。

封装请求数据的hook:

接口请求通常是通用的代码逻辑,避免页面代码重复,通常应该会封装为一个自定义的hook,然后在组件中直接调用方法请求数据。

react中抽取智能组件和业务组件

为什么要抽离?这里我理解的抽离后会让代码更加分离一点,展示组件和业务功能组件分离,方便阅读。

通信:既然分离,会涉及到子组件需要调用到父组件中的方法,进行数据修改等操作。红色区域中的onDel是提供给子组件使用的函数方法,handleDel是父组件中处理数据操作的方法回调。这样在子组件中触发onDel方法并传递参数,父组件就可以接收到子组件中触发的item信息(id等),相当与是子组件像父组件通信。 

 关于redux devtools

redux调试工具:安装到浏览去的扩展程序中,方便调试查看redux中的状态和跟踪状态修改等。

资源共享网盘链接:react项目安装redux-devtools插件方法教程,亲测有效。_react 项目开发浏览器 显示redux怎么按照-CSDN博客

调试效果:因为这里我没有定义使用redux,所以是空的,看不到任何redux共享管理的仓库状态。

 

美团案例:

可以把项目的静态资源或者平时的项目文件存放到github仓库,以后要用会很方便。

npm i 安装依赖

mock服务模拟服务请求数据

package.json文件:安装的项目依赖文件会在这里看到

 

实现步骤:

 

一、启动服务:

1.1启动mock服务:(这里可以理解为模拟后端接口服务请求)

 

1.2 启动前端服务------npm run start

添加购物车:

 

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React 18React的最新版本,它引入了一些新的功能和改进。在学习React 18时,你可以关注以下几个方面: 1. React组件:React组件是构建用户界面的基本单元。你可以使用React.createElement()函数或JSX语法来创建React元素和组件。React元素是不可变的,而React组件是可复用的。\[1\] 2. react-dom.development.js或react-dom/client模块:这些模块提供了处理真实DOM的功能,包括Diff算法和渲染成真实DOM的过程。你可以在HTML文件中引入这些模块,并使用ReactDOM.createRoot()方法来渲染React的DOM。\[2\] 3. Hook:Hook是React中的特殊函数,它允许你在函数组件中添加状态和其他特性。例如,useState是一个Hook,它可以让你在函数组件中添加状态。你可以使用useState来定义和更新状态,并在组件中使用它们。\[3\] 在学习React 18时,你可以通过阅读官方文档、参考教程和实践项目来深入了解这些概念和用法。同时,你也可以与其他开发者交流和分享经验,加深对React的理解。 #### 引用[.reference_title] - *1* *2* *3* [2023年React18笔记【慕课网imooc】【尚硅谷】【Vue3+React18 + TS4考勤系统】](https://blog.csdn.net/qq_28838891/article/details/124598439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值