React 你还在用 Redux 吗?更简化的状态管理工具(Recoil)

这篇具有很好参考价值的文章主要介绍了React 你还在用 Redux 吗?更简化的状态管理工具(Recoil)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以往传统的 Redux 状态管理工具使用起来代码太过于复杂。


你需要通过纯函数触发 action 再去修改 data 中定义的数据,而且要通过接口请求数据还需要借助 redux - think 这个中间件才能完成。。。

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

更加方便使用的工具:Recoil ~   由 facebook 推出契合 React 的状态管理

它的定义方式和 useState 这个 HOOK 非常像,你可以更加简化的完成你的全局数据共享

pnpm install recoil        yarn install recoil       npm install recoil

安装好这个工具之后直接开始使用,需要引入之后包裹你的根组件 

import React from 'react';

// 引入 Recoil 在 main.tsx 中包裹住你的根组件
import {
  RecoilRoot,
  atom,
  selector,
  useRecoilState,
  useRecoilValue,
} from 'recoil';


function App() {
  return (
    // 此处包裹
    <RecoilRoot>
      <CharacterCounter />
    </RecoilRoot>
  );
}

这一步做好之后,你可以在 src 文件之下定义 store(仓库)文件夹,名字随便起,按照自己喜欢的来(前提取的名字不要太骚被你的领导叫去喝茶)

它有两种定义数据的方式:

1. atom

2. selector

(在你创建好的文件夹下面创建 .js || .ts文件,比如我需要一个固定的管理员枚举,不会被修改) 

1)第一种 atom 的形式

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

default 中可以写任何数据结构,数组 对象 字符串 数字等等等等

你要使用怎么办?

  React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

import { adminEnum } from '@/store/adminEnumObject'

 直接在组件里面引入它,'@/store/adminEnumObject' 就是我创建好的管理员枚举文件

import { useRecoilValue } from 'recoil'

同时引入 recoil 身上的 useRecoilValue 方法,可以获取你定义的 atom || selector 中的指定数据 (是不是跟 HOOK 的写法非常像) 

const adminUser = useRecoilValue(adminEnum)

接着用  useRecoilValue 方法包裹你引入的文件,将它赋值给一个变量,你通过这个变量就可以访问到他身上的所有属性了。

注意:atom 定义的数据在刷新页面会自动丢失,除非将数据写成死的,一般用于固定的枚举。

2)第二种 selector 的形式

这种定义方式就较为🐂🍺了,因为它内部采用发布订阅的模式

(这种形式定义的数据也会在刷新的同时全部丢失,是可以避免的。请继续往下看)

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

 它带有一个 get 属性,你可以在它内部调用接口,return 出来的数据就会赋值给你这个变量

它只是一个定义的数据啊,那接口我不还得自己调用吗?

如果说你在当前页面的组件里面使用到了这个数据,他就会自动调用 get 中的接口,完成数据返回

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

 我这里使用到了 dictValuesSelector 并且这个页面已经渲染到浏览器了,它就会自动开始调用接口。

上面说的刷新会丢失数据的问题,你只要在当前页面用到了 Recoil 定义的 selector 它就会自动重新请求,永远不会出现数据突然丢失的问题!

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

并且你也可以给返回的数据写上 TS 的类型!!这样你的其他前端小伙伴在使用的时候可以更加快速的找到需要的字段信息。

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil),react.js,javascript,前端,前端框架,yarn,npm,html

时小记,终有成。文章来源地址https://www.toymoban.com/news/detail-736414.html

到了这里,关于React 你还在用 Redux 吗?更简化的状态管理工具(Recoil)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • react状态管理工具reduxjs/toolkit用法

    安装 npm install @reduxjs/toolkit 1.创建一个名为 counterSlice.js 的文件,用于处理计数器模块的状态: 2.创建一个名为 userSlice.js 的文件,用于处理用户信息模块的状态: 3.创建一个Redux store并将这些模块整合起来。创建一个名为 store.js 的文件: 4.在你的应用程序的入口处,将store与

    2024年02月15日
    浏览(39)
  • vue2(Vuex)、vue3(Pinia)、react(Redux)状态管理

    Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它使用集中式存储管理应用的所有组件的状态,以及规则保证状态只能按照规定的方式进行修改。 State(状态) :Vuex 使用单一状态树,即一个对象包含全部的应用层级状态。这个状态树对应着一个应用中的所有状态。 Gett

    2024年01月23日
    浏览(48)
  • 【实战】 九、深入React 状态管理与Redux机制(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十六)

    学习内容来源:React + React Hook + TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.03)采用的是当前最新版本: 项 版本 react react-dom ^18.2.0 react-router react-router-dom ^6.11.2 antd ^4.24.8 @commitlint/cli @commitlint/config-conventional ^17.4.4 eslint-config-prettier ^8.6.0 husky ^8.0.3 lint-staged ^13.1.2 p

    2024年02月15日
    浏览(41)
  • 【实战】 九、深入React 状态管理与Redux机制(五) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十)

    学习内容来源:React + React Hook + TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.03)采用的是当前最新版本: 项 版本 react react-dom ^18.2.0 react-router react-router-dom ^6.11.2 antd ^4.24.8 @commitlint/cli @commitlint/config-conventional ^17.4.4 eslint-config-prettier ^8.6.0 husky ^8.0.3 lint-staged ^13.1.2 p

    2024年02月13日
    浏览(43)
  • 【实战】 九、深入React 状态管理与Redux机制(二) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十七)

    学习内容来源:React + React Hook + TS 最佳实践-慕课网 相对原教程,我在学习开始时(2023.03)采用的是当前最新版本: 项 版本 react react-dom ^18.2.0 react-router react-router-dom ^6.11.2 antd ^4.24.8 @commitlint/cli @commitlint/config-conventional ^17.4.4 eslint-config-prettier ^8.6.0 husky ^8.0.3 lint-staged ^13.1.2 p

    2024年02月14日
    浏览(45)
  • 超全!年薪40w项目经理都在用的10个管理工具

    大家好,我是老原。 今天的文章,当然还是干货为主。 这期给你安利一些免费、好用、高效、简洁的项目管理工具,这些工具都非常适合从事项目的打工人使用。 其实对于工作比较久的职场人来说,会有一个思维惯性,就是对免费工具有些嗤之以鼻。 但如果有人帮你筛选了

    2024年02月11日
    浏览(44)
  • react之react-redux的介绍、基本使用、获取状态、分发动作、数据流、reducer的分离与合并等

    官网地址 React 和 Redux 是两个独立的库,两者之间职责独立。因此,为了实现在 React 中使用 Redux 进行状态管理 ,就需要一种机制,将这两个独立的库关联在一起。这时候就用到 React-Redux 这个绑定库了 作用:为 React 接入 Redux,实现在 React 中使用 Redux 进行状态管理。 react-r

    2024年02月11日
    浏览(53)
  • 你还在用Object.equals()方法吗?

    当《阿里巴巴Java开发手册》发布后,我也是仔细进行了阅读,想从中找出一些“标准”,让自己的代码质量提高。手册中对 Object 的 equals 方法的使用进行了强制,而且推荐使用 JDK7 中工具类 Objects 的 equals 方法,至此之后我就很少使用 Object.equals() 方法了。 在第一章:编程规

    2024年02月08日
    浏览(38)
  • 你还在用Kettle吗?试试这款ETL工具

    当今时代,数字化转型已经成为企业发展的必由之路。数字化转型不仅可以提高企业的效率和生产力,还可以提高企业的竞争力和市场份额。在数字化转型的过程中,数据集成是至关重要的一步,可以帮助企业在数字化转型中实现更高效和可靠的数据服务。 在国内没有更好的

    2024年02月09日
    浏览(50)
  • 服务器推送数据你还在用 WebSocket么?

    当涉及到推送数据时,人们首先会想到 WebSocket。 的确,WebSocket 允许双向通信,可以自然地用于服务器到浏览器的消息推送。 然而,如果只需要单向的消息推送,HTTP 通过服务器发送的事件也有这种功能。 WebSocket 的通信过程如下: 首先,通过 HTTP 切换协议。服务器返回 101 状态码后

    2024年01月18日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包