繼續使用 Recoil 預設值及資料級聯的使用 的地域可用區級聯的例子。 地域變更後可用區隨之聯動,兩個下拉框皆預設選中第一個可選項。 從 URL 獲取預設值考慮這種情況,當 URL 中帶了 query 引數指定地域時,想要預設選中指定的地域。 首先安裝一個解析 query 的庫 query-string 方便獲取 query 並解析引數。 $ yarn add query-string
這樣在地域元件中,就需要處理 URL 中的引數,如果發現帶參,則更新地域資訊。 RegionSelect.tsx import { parse } from "query-string";
import React, { useEffect } from "react";
import { useRecoilState, useRecoilValue } from "recoil";
import { regionsState, regionState } from "./appState";
export function RegionSelect() {
const regions = useRecoilValue(regionsState);
const [region, setRegion] = useRecoilState(regionState);
const regionId = parse(window.location.search).region;
useEffect(() => {
if (regionId) {
const urlRegion = regions.find((region) => region.id === regionId);
if (urlRegion) {
setRegion(urlRegion);
}
}
}, [regionId, regions, setRegion]);
return (
…
);
}
同時將當前地域資訊列印出來,可以預見,上面因為在 useEffect 中處理URL 具有滯後性 在 Recoil 中處理值得注意的是, 按照這個思路將從 URL 獲取地域的邏輯挪到 appState.ts export const regionState = atom({
key: "regionState",
default: selector({
key: "regionState/Default",
get: ({ get }) => {
const regions = get(regionsState);
+ const regionId = parse(window.location.search).region;
+ if (regionId) {
+ const urlRegion = regions.find((region) => region.id === regionId);
+ if (urlRegion) {
+ return urlRegion;
+ }
+ }
return regions[0];
},
}),
});
 在 atom 中處理引數的獲取 |
The text was updated successfully, but these errors were encountered: |
Recoil 中預設值的正確處理
相關文章
- Recoil 預設值及資料級聯的使用
- Node中POST請求的正確處理方式
- 如何正確處理nonce
- antdesign的表單中的下拉框設定預設值BUG處理
- Jtti:怎樣正確處理Redis中的海量資料JttiRedis
- springboot~jpa優雅的處理isDelete的預設值Spring Bootdelete
- Go 100 mistakes 之如何正確設定列舉值中的零值Go
- 【scikit-learn基礎】--『預處理』之 缺失值處理
- JavaScript 如何正確處理 Unicode 編碼問題!JavaScriptUnicode
- JavaScript如何正確處理Unicode編碼問題!JavaScriptUnicode
- 使用 pymysql 的時候如何正確的處理轉義字元MySql字元
- php cli 中的使用curl 記憶體溢位時的正確處理辦法PHP記憶體溢位
- 如何在Kubernetes部署期間正確處理DB模式模式
- Apache Flink 如何正確處理實時計算場景中的亂序資料Apache
- 在EntityFramework6中管理DbContext的正確方式(2)【DbContext的預設行為】FrameworkContext
- 如何處理JavaScript 中的貨幣值?JavaScript
- 材質最佳化:如何正確處理紋理和材質的關係
- 遇到股票套牢該如何正確處理?股票套牢解套技
- 正確理解CAP理論
- Windows批處理中的變數和值Windows變數
- openCV中的影像處理 3 影像閾值OpenCV
- MyBatis SQL xml處理小於號與大於號正確的格式MyBatisSQLXML
- 【scikit-learn基礎】--『預處理』之 正則化
- 被誤刪的檔案正確處理方法,快速找回誤刪的檔案
- Android中Handler的正確使用Android
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV
- 原始碼分析springboot自定義jackson序列化,預設null值個性化處理返回值原始碼Spring BootNull
- es6中的引數預設值
- 機器學習 第3篇:資料預處理(使用插補法處理缺失值)機器學習
- 影像預處理
- Protobuf在Cmake中的正確使用
- C#中dynamic的正確用法C#
- Recoil 的使用
- 處理日期和時區轉換:為什麼正確的 UTC 轉換很重要
- MyBatis SQL資料庫xml處理小於號與大於號正確的格式MyBatisSQL資料庫XML
- Python中如何給字典設定預設值Python
- 珊瑚色 影像後期處理Lightroom預設OOM
- ${VAR:=預設值}和${VAR:-預設值} 區別