Closed godmmt closed 6 months ago
目前我的頁面有加這個條件
例如 src/pages/app/currencies/[currencyId]/red-flag.tsx
:
// Info: (20240307 - Liz) 當日期、搜尋、篩選、排序的條件改變時,將 activePage 設為 1。
useEffect(() => {
setActivePage(1);
}, [search, filteredType, period, sorting]);
當日期、搜尋、篩選、排序的條件改變時會自動跳轉回第一頁
但是 URL 不會跟著改變,網址依然會在剛才原本的頁數。這部分似乎需要做調整?
https://github.com/CAFECA-IO/BAIFA/assets/105651918/ef7b266c-b520-48de-88f7-1f73ea509ff4
修改為: 當日期、搜尋、篩選、排序的條件改變時,分頁自動跳轉回第一頁,並且網址列也跟著一起更新為 page=1
像是這樣的網址:
http://localhost:3000/en/app/currencies/0x0000000000000000000000000000000000000000/red-flag?page=2
調整為與 Shirley 一致,新增 API query 參數 offset
,控制每次拿取資料的數量 (P.S.現在的預設值是 10)
Liz 會調整 Julian & Liz 的頁面 (#985)
const router = useRouter();
const {page} = router.query;
const [activePage, setActivePage] = useState<number>(page ? +page : DEFAULT_PAGE);
// Info: (20240307 - Liz) 當日期、搜尋、篩選、排序的條件改變時,將 activePage 設為 1。
useEffect(() => {
setActivePage(1);
}, [search, filteredType, period, sorting]);
這裡一開始 activePage
是預設有拿到網址列的 2
但又被 useEffect 更新了
第一次 render 就會被更新 跟 search, filteredType, period, sorting 改變才更新的預期有差異。
https://github.com/CAFECA-IO/BAIFA/assets/105651918/a71daa7c-75ac-4948-b0cc-948376ec2575
// Info: (20240307 - Liz) 當日期、搜尋、篩選、排序的條件改變時,將 activePage 設為 1。
useEffect(() => {
if (
search !== '' ||
filteredType !== defaultOption ||
sorting !== sortOldAndNewOptions[0] ||
(period.startTimeStamp !== default30DayPeriod.startTimeStamp &&
period.endTimeStamp !== default30DayPeriod.endTimeStamp)
)
setActivePage(1);
}, [search, filteredType, sorting, period.startTimeStamp, period.endTimeStamp]);
加上限制後,如果狀態維持在預設值的話,就不會觸發渲染。
這裡注意 period
是一個物件,要比較其值,而不是其引用。
https://github.com/CAFECA-IO/BAIFA/assets/105651918/94e24e21-819a-43cc-971f-aa1170a831cf
每一次 setPeriod 的同時 setActivePage 每一次 setSorting 的同時 setActivePage 以此類推
~remain 4 hours~
Todo : (已另外開單就不在這裡處理了)
1. 分頁問題
修改為:當日期、搜尋、篩選、排序的條件改變時,分頁自動跳轉回第一頁,網址列也跟著一起更新為 page=1
先寫解決方法 (red flag of currency page)
再另外把其他頁面一併開單
total : 4 hours
This issue is done.
每一次 setPeriod 的同時 setActivePage 每一次 setSorting 的同時 setActivePage 以此類推
會修改到的元件有
<DatePicker period={period} setFilteredPeriod={setPeriod} />
<SortingMenu
sortingOptions={sortOldAndNewOptions}
sorting={sorting}
setSorting={setSorting}
bgColor="bg-darkPurple"
/>
<SortingMenu
sortingOptions={typeOptions}
sorting={filteredType}
setSorting={setFilteredType}
bgColor="bg-darkPurple"
/>
<SearchBar
searchBarPlaceholder={t('COMMON.TOP_100_HOLDER_PLACEHOLDER')}
setSearch={setSearch}
/>
<DatePicker
period={period}
setFilteredPeriod={setPeriod}
setActivePage={setActivePage}
/>
<SortingMenu
sortingOptions={sortOldAndNewOptions}
sorting={sorting}
setSorting={setSorting}
bgColor="bg-darkPurple"
setActivePage={setActivePage}
/>
<SearchBar
searchBarPlaceholder={t('COMMON.TOP_100_HOLDER_PLACEHOLDER')}
setSearch={setSearch}
setActivePage={setActivePage}
/>
<div className="flex lg:w-7/10">
{SearchBarWithKeyDown({
searchBarPlaceholder: t('CURRENCIES_PAGE.SEARCH_PLACEHOLDER'),
setSearch: setSearch,
setActivePage: setActivePage,
})}
</div>
被影響元件
Before:
// Info: (20240308 - Liz) 當搜尋、篩選、排序的條件改變時,將 activePage 設為 1。
// useEffect(() => {
// setActivePage(1);
// }, [search, filteredType, sorting]);
After:
<div className="flex lg:w-7/10">
{SearchBarWithKeyDown({
searchBarPlaceholder: t('CURRENCIES_PAGE.SEARCH_PLACEHOLDER'),
setSearch: setSearch,
setActivePage: setActivePage,
})}
</div>
<SortingMenu
sortingOptions={typeOptions}
sorting={filteredType}
setSorting={setFilteredType}
bgColor="bg-darkPurple"
setActivePage={setActivePage}
/>
<SortingMenu
sortingOptions={sortingOptions}
sorting={sorting}
setSorting={setSorting}
bgColor="bg-darkPurple"
setActivePage={setActivePage}
/>
// Deprecated: (今天丟棄 - Liz)
// Info: (20240314 - Liz) 當搜尋條件改變時,將 activePage 設為 1
// useEffect(() => {
// setActivePage(1);
// }, [search]);
<SearchBar
searchBarPlaceholder={t('COMMON.TOP_100_HOLDER_PLACEHOLDER')}
setSearch={setSearch}
setActivePage={setActivePage}
/>
// Deprecated: (今天丟棄 - Liz)
// Info: (20240305 - Liz) 當搜尋或篩選的條件改變時,將 activePage 設為 1。雖然搜尋、篩選、排序都是重新打 API 拿新資料,但是搜尋、篩選的條件改變可能導致資料筆數改變,而 sorting 只是就該頁面的 10 筆資料做排序,所以不需要重設 activePage。
// useEffect(() => {
// setActivePage(1);
// }, [search, filteredTagName]);
<SearchBar
searchBarPlaceholder={t('BLACKLIST_PAGE.SEARCH_PLACEHOLDER')}
setSearch={setSearch}
setActivePage={setActivePage}
/>
<SortingMenu
sortingOptions={tagNameOptions}
sorting={filteredTagName}
setSorting={setFilteredTagName}
bgColor="bg-darkPurple"
setActivePage={setActivePage}
/>
最新、最舊的排序不是用資料庫的資料做排序, 只是以當頁畫面上的資料做排序而已, 所以不需要回到預設頁(第一頁)
<SortingMenu
sortingOptions={sortOldAndNewOptions}
sorting={sorting}
setSorting={setSorting}
bgColor="bg-darkPurple"
// setActivePage={setActivePage}
/>
// Deprecated: (今天丟棄 - Liz)
// // Info: (20240307 - Liz) 當日期、搜尋、排序的條件改變時,將 activePage 設為 1。
// useEffect(() => {
// setActivePage(1);
// }, [search, period, sorting]);
這一頁是處理元件 TransactionHistorySection
// Info: 需要 suggestions 的話,顯示 SearchBarWithSuggestions,否則顯示 SearchBarWithKeyDown (20240314 - Shirley)
const displayedSearchBar =
!!suggestions && !!getSearch
? SearchBarWithSuggestions({
searchBarPlaceholder: t('COMMON.TRANSACTION_HISTORY_PLACEHOLDER'),
setSearch: setSearch ?? setSearchDefault,
suggestions: suggestions,
getSearch: getSearch,
setActivePage: setActivePage ?? setActivePageDefault,
})
: SearchBarWithKeyDown({
searchBarPlaceholder: t('COMMON.TRANSACTION_HISTORY_PLACEHOLDER'),
setSearch: setSearch ?? setSearchDefault,
setActivePage: setActivePage ?? setActivePageDefault,
});
<DatePicker
period={period ?? periodDefault}
setFilteredPeriod={setPeriod ?? setPeriodDefault}
isLinearBg
setActivePage={setActivePage ?? setActivePageDefault}
/>
<SortingMenu
sortingOptions={sortOldAndNewOptions}
sorting={sorting ?? sortingDefault}
setSorting={setSorting ?? setSortingDefault}
bgColor="bg-purpleLinear"
sortPrefix={`transaction`}
setActivePage={setActivePage ?? setActivePageDefault}
/>
// Info: (20240327 - Liz) 當日期、搜尋、篩選、排序的條件改變時,將 activePage 設為 1。
// useEffect(() => {
// setActivePage(1);
// }, [search, filteredType, sorting, period.startTimeStamp, period.endTimeStamp]);
修改元件 RedFlagList
took 1 hour planning
done
Todo :
新增 issue :
問題敘述 :
分頁按鈕按下去後,假設選到第二頁
這時候如果點選下拉式選單做 filter 不會自動回到第一頁 不管資料有幾頁都停在第二頁 頭上的網址 URL 沒有跟著更新為 page=1
https://github.com/CAFECA-IO/BAIFA/assets/105651918/fe7e164d-32a7-4910-9403-74ba2cdf6f6c