日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

React中完整實例講解Recoil狀態管理庫的使用

瀏覽:326日期:2022-06-10 14:04:03
目錄
  • Recoil狀態管理庫
  • Atom(options)
  • Selector(options)

Recoil狀態管理庫

先讓我吐槽一下,Recoil這個玩意文檔是真的不友好,另外發現國內很少有人去用Recoil,然后好多文章都是照搬官網文檔,我特喵的要是出了問題直接看官方不就行了。如果你碰巧看到這個文章了,就細心看完吧,絕對的干貨。至于它的一些優點特性,自己找找別的對比文章吧,我這里僅僅進行一個簡單的示例演示及學習。

第一步:創建項目

利用vite創建一個React項目,其他的一樣,別問我為啥只講vite,因為我就是用的vite。

pnpm create vite
……選擇react項目至于是ts還是js看你自己的喜好……
npm install
npm run dev

這是我的項目目錄:

第二步:Recoil安裝

pnpm add recoil

項目使用

在main.tsx中插入<RecoilRoot />,注意這個標簽必須是UI的根。

import ReactDOM from "react-dom/client";import { BrowserRouter } from "react-router-dom";import { RecoilRoot } from "recoil";import App from "./App";import "antd/dist/reset.css";import "animate.css";import "@/assets/styles/index.scss";// react 18 創建(會導致 antd 菜單折疊時閃爍,等待官方修復)ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(  // * react嚴格模式  // <React.StrictMode>  <BrowserRouter>   <RecoilRoot>    <App></App>   </RecoilRoot>  </BrowserRouter>,  // </React.StrictMode>,);

為了使用方便,我將其按照大眾化水準創建了一個目錄,并進行了一些簡單的封裝。好不好用大家自行使用,不好用自己改好用。

// 示例封裝import { atom, selector } from "recoil";import ThemeConfig from "@/config/themeConfig";import { ITheme } from "@/interface/theme";const theme: ITheme = {  title: import.meta.env.VITE_TITLE,  theme: "default",  i18n: ThemeConfig.i18nDef,};export const themeState = atom({  key: "themeState",  default: theme,});export default {  i18nState: atom({   key: "i18nState",   default: ThemeConfig.i18nDef,  }),  useThemeState: selector({   key: "useThemeState",   get: ({ get }) => {    return get(themeState);   },   set: ({ get, set }, newValue) => {    const oldValue = get(themeState);    const updateValue = Object.assign({}, oldValue, newValue);    set(themeState, updateValue);   },  }),};
// index.ts入口import Theme from "./modules/theme";export default {  …Theme,};

使用示例

import { useEffect } from "react";import { Row, Col, Pagination, Switch } from "antd";import { atom, useSetRecoilState, useRecoilState, useRecoilValue } from "recoil";import Store from "@/store";import "@/assets/styles/page/home.scss";export default function Home() {  const [i18nState, setI18nState] = useRecoilState(Store.i18nState);  const setThemeState = useSetRecoilState(Store.useThemeState);  const themeState = useRecoilValue(Store.useThemeState);  useEffect(() => {   setI18nState("en-us");   console.log(i18nState);  }, []);  const onChange = (checked: boolean) => {   console.log(`switch to ${checked}`);   setThemeState({ i18n: "en-us" });   if (checked) {    setThemeState({ i18n: "zh-cn" });   } else {    setThemeState({ i18n: "en-us" });   }   console.log(themeState);  };  return (   <Row justify="center" className="content-body home-box">    <Col span={24}>     <Pagination total={85} showSizeChanger showQuickJumper showTotal={(total) => `Total ${total} items`}></Pagination>     <Switch defaultChecked onChange={onChange} />    </Col>   </Row>  );}

重點!!!:針對其特性我簡單給大家講一下如何正確理解并使用它的一些屬性及hook,僅僅限于其常用的,不常用的大家自行研究或者給我留私信。

Atom(options)

包含我們應用中狀態的來源。最細粒子,直接定義我們使用的狀態,因為后續的selector也是基于此進行的操作。

export const demoState = atom({  key: "demoState",  default: ”demo”,});export const atomState = atom({  key: "atomState",  default: {i18n: “en”},});

Selector(options)

代表一個派生狀態,你可以將派生狀態視為將狀態傳遞給以某種方式修改給定狀態的純函數的輸出。說白了,這個就是可以處理一下復雜的狀態,或者處理一下自己需要的狀態。

export const useAtomState = selector({  key: "useAtomState",  get: ({ get }) => {return get(atomState)},  set: ({ get, set }, newValue) => {set(atomState, newValue)},});

useRecoilState(state)

利用此hook可以進行讀寫操作,和react中的useState可以說是一模一樣的用法,你怎么理解useState就怎么理解useRecoilState就行。

const [demoState, setDemoState] = useRecoilState(demoState);

useRecoilValue(state)

這個就是直接讀取其內部的值,僅此而以。

const demoState = useRecoilValue(demoState);

useSetRecoilState(state)

這個也是僅僅修改值,僅此而以。

const setDemoState = useSetRecoilState(demoState);

記住,你定義的什么就寫入什么,不要定義一個object寫入一個string或者其他的奇奇怪怪的東西,這樣肯定不會報錯,但是你用的時候肯定會肝火旺盛。

其他的hook大家自己研究玩吧。大家感興趣的話,直接去看下面的完整項目吧。

到此這篇關于React中完整實例講解Recoil狀態管理庫的使用的文章就介紹到這了,更多相關React Recoil內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品99| 视频一区在线播放| 国产午夜久久av| 亚洲91网站| 天堂精品久久久久| 日韩精品视频一区二区三区| 午夜在线一区二区| 丝袜美腿高跟呻吟高潮一区| 蜜桃久久久久久| 日韩一区精品| 视频一区在线视频| 日韩精品视频在线看| 久久激情五月婷婷| 精品免费视频| 九色porny丨国产首页在线| 麻豆精品蜜桃| 国产亚洲激情| 欧美一区二区三区激情视频 | 日韩av在线播放网址| 精品99久久| 蜜桃视频第一区免费观看| 久久国产成人午夜av影院宅| 久久免费黄色| 99tv成人| 亚洲欧美日韩国产| 日本aⅴ亚洲精品中文乱码 | 国产伦乱精品| 国产成人免费精品| 婷婷综合亚洲| 日韩av资源网| 鲁鲁在线中文| 丝瓜av网站精品一区二区| 亚洲在线久久| 国产精品调教视频| 久久影院午夜精品| 久久一区二区三区电影| 亚洲自啪免费| 国产精品网址| 亚洲国产专区| 日本不卡一区二区三区| 首页国产精品| 久热re这里精品视频在线6| 久久激情五月婷婷| 三级精品视频| 日本综合精品一区| 91偷拍一区二区三区精品| 一本色道久久精品| 国产精品一区二区av交换 | 视频在线观看一区二区三区| 国产精品主播| 国产综合亚洲精品一区二| 深夜日韩欧美| 播放一区二区| 日本三级亚洲精品| 久久婷婷激情| 日本91福利区| 亚洲午夜91| 国产精品17p| 老司机精品久久| 国产一区二区三区四区二区| 久久成人精品| 日韩av有码| 日本成人中文字幕在线视频| 蜜桃av.网站在线观看| 日本vs亚洲vs韩国一区三区二区| av高清不卡| 人人精品久久| 好看的av在线不卡观看| 美女视频黄 久久| 免费观看在线综合色| 日韩久久视频| 国产精品久久久久久妇女| av亚洲在线观看| 欧美激情国产在线| 国产精品亚洲片在线播放| 丝袜亚洲另类欧美| 国内精品福利| 亚洲黄色免费看| 欧美亚洲福利| 日韩制服丝袜av| 性欧美xxxx免费岛国不卡电影| 美女视频免费精品| 日韩av电影一区| 三级欧美在线一区| 亚洲精品极品少妇16p| 欧美亚洲日本精品| 久久一区精品| 国产伦理久久久久久妇女| 蘑菇福利视频一区播放| 久久精品电影| 9999国产精品| 国产精品欧美三级在线观看| 石原莉奈在线亚洲二区| 日本久久成人网| 国产成人免费av一区二区午夜| 91精品国产自产观看在线 | 国产精品人人爽人人做我的可爱| 亚洲黄色网址| 国产一区二区三区不卡av| 国产精品一在线观看| 日韩美女国产精品| 中文不卡在线| 香蕉久久夜色精品国产| av一区二区高清| 国产精品av久久久久久麻豆网| 日本不卡免费高清视频在线| 国产一区二区视频在线看| 国产美女精品视频免费播放软件| 日韩1区2区日韩1区2区| 日本成人手机在线| 日韩av电影一区| 欧美久久亚洲| 国产精品亚洲四区在线观看| 国产精品三级| 麻豆精品在线播放| 麻豆视频一区二区| 久久久亚洲欧洲日产| 欧美激情麻豆| 精品国产欧美日韩| 国产一区二区三区四区二区| 精品国产精品久久一区免费式| 国产精品视频一区二区三区综合| 日韩国产欧美视频| 欧美日韩亚洲一区在线观看| 国产探花一区二区| 国产精品a级| 久久精品免视看国产成人| 老司机精品视频在线播放| 久久精品国产网站| 亚洲黄色免费av| 久久精品国产99久久| 欧美jjzz| 男女男精品网站| 日韩福利在线观看| 国产激情欧美| 高清av一区| 成人影视亚洲图片在线| 中文字幕免费精品| 日韩精品成人| 国产一区二区三区久久久久久久久| 欧美日韩视频一区二区三区| 精品视频在线一区二区在线| 中文字幕日韩亚洲| 日韩中文欧美| 乱一区二区av| 亚洲精品自拍| 视频小说一区二区| 国产精品115| 日韩福利视频一区| 日韩精品免费一区二区在线观看| 国产美女久久| 特黄毛片在线观看| 伊人久久国产| 妖精视频成人观看www| 日本一区中文字幕| 久久不见久久见免费视频7 | 免费在线观看一区| 亚洲va中文在线播放免费| 99国产精品自拍| 日韩精品久久久久久| 福利一区二区| 国产亚洲精品自拍| 国产美女视频一区二区| 日韩一区电影| 视频一区二区三区在线| 日韩avvvv在线播放| 成人一区不卡| 久久xxxx精品视频| 国产精品xxx| 久久精品中文| 中文字幕日韩高清在线| 久久亚洲黄色| 午夜精品免费| 国产欧美啪啪| 欧美一区二区三区高清视频| 综合一区av| 久久久久久自在自线| 国产亚洲一级| 久久av资源| av不卡在线| 久久久久观看| 三级欧美韩日大片在线看| 久久久久久夜| 日韩欧美久久| 免费精品国产| 蜜桃久久久久| 免费黄网站欧美| 国产精品久久久久av电视剧| 日韩一区免费| 欧美69视频| 国产一区二区三区四区五区 | 国产视频一区二| 亚洲先锋成人| 国产精品香蕉| 久久福利影视| 亚洲午夜天堂| 国产情侣一区| 免费一级片91| 日韩高清成人| 国产精品theporn|