繼續使用 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 預設值及資料級聯的使用
- 正確處理listview的positionView
- Node中POST請求的正確處理方式
- 如何正確處理nonce
- antdesign的表單中的下拉框設定預設值BUG處理
- Jtti:怎樣正確處理Redis中的海量資料JttiRedis
- 處理JavaScript異常的正確姿勢JavaScript
- 正確的軟體開發程式有助於處理不可預見的問題
- 正確處理被病毒侵入電腦的方法
- Go 100 mistakes 之如何正確設定列舉值中的零值Go
- JavaScript 中錯誤正確處理方式,你用對了嗎?JavaScript
- 【scikit-learn基礎】--『預處理』之 缺失值處理
- 以太坊實戰之《如何正確處理nonce》
- 使用 pymysql 的時候如何正確的處理轉義字元MySql字元
- php cli 中的使用curl 記憶體溢位時的正確處理辦法PHP記憶體溢位
- 第四篇:資料預處理(一) - 缺失值處理
- 影像處理或其他多媒體處理中的值溢位處理
- JavaScript 如何正確處理 Unicode 編碼問題!JavaScriptUnicode
- JavaScript如何正確處理Unicode編碼問題!JavaScriptUnicode
- 如何處理JavaScript 中的貨幣值?JavaScript
- 材質優化:如何正確處理紋理和材質的關係優化
- JBPM4.3 流程處理中設定流程中變數值變數
- 應用:資料預處理-缺失值填充
- 正確理解CAP理論
- C++中的預處理(上) (轉)C++
- C++中的預處理(下) (轉)C++
- Apache Flink 如何正確處理實時計算場景中的亂序資料Apache
- 遇到股票套牢該如何正確處理?股票套牢解套技
- 在EntityFramework6中管理DbContext的正確方式(2)【DbContext的預設行為】FrameworkContext
- openCV中的影像處理 3 影像閾值OpenCV
- 關於JF框架中的空值處理框架
- Python中的預設引數值Python
- Oracle中NLS_LANG的預設值Oracle
- 機器學習 第2篇:資料預處理(缺失值)機器學習
- 機器學習 第3篇:資料預處理(使用插補法處理缺失值)機器學習
- MyBatis SQL xml處理小於號與大於號正確的格式MyBatisSQLXML
- 如何在Kubernetes部署期間正確處理DB模式模式
- 【scikit-learn基礎】--『預處理』之 正則化