Skip to content

Commit b451dd1

Browse files
committed
fix(docs): refresh controllable example when parent element resized
1 parent db89ec8 commit b451dd1

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

docs/src/components/examples/middle-truncate/ControllableMiddleTruncate.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
EW,
88
} from '@/components/examples/Widgets'
99
import { useLang, type Languages } from '@/i18n'
10+
import { useRefreshKey } from '@/hooks/use-refresh-key'
1011

1112
export const ControllableMiddleTruncate: React.FC<{
1213
lang: Languages
@@ -17,6 +18,8 @@ export const ControllableMiddleTruncate: React.FC<{
1718
const [end, setEnd] = useState(DEFAULT_END_VALUE)
1819
const [html, setHtml] = useState(DEFAULT_HTML_VALUE)
1920

21+
const { refreshKey } = useRefreshKey([width, end])
22+
2023
return (
2124
<>
2225
<EW.Range
@@ -26,7 +29,7 @@ export const ControllableMiddleTruncate: React.FC<{
2629
min="50"
2730
max="100"
2831
defaultValue={DEFAULT_WIDTH_VALUE}
29-
onChange={(v) => setWidth(v)}
32+
onChange={setWidth}
3033
/>
3134

3235
<EW.Range
@@ -36,19 +39,19 @@ export const ControllableMiddleTruncate: React.FC<{
3639
min="-100"
3740
max="100"
3841
defaultValue={DEFAULT_END_VALUE}
39-
onChange={(v) => setEnd(v)}
42+
onChange={setEnd}
4043
percentable={false}
4144
/>
4245

4346
<EW.Switch
4447
lang={lang}
4548
labelKey="example.html"
4649
checked={html}
47-
onChange={(v) => setHtml(v)}
50+
onChange={setHtml}
4851
/>
4952

5053
<EW.Container style={{ width: `${width}%` }}>
51-
<MiddleTruncate separator={isZh ? '' : ' '} end={end}>
54+
<MiddleTruncate separator={isZh ? '' : ' '} end={end} key={refreshKey}>
5255
<EW.Content isZh={isZh} html={html} />
5356
</MiddleTruncate>
5457
</EW.Container>

docs/src/components/examples/show-more/ControllableShowMore.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
EW,
1313
} from '@/components/examples/Widgets'
1414
import { useLang, type Languages } from '@/i18n'
15+
import { useRefreshKey } from '@/hooks/use-refresh-key'
1516

1617
const CustomButton: React.FC<{
1718
type: 'more' | 'less'
@@ -48,6 +49,8 @@ export const ControllableShowMore: React.FC<{
4849
ref.current?.toggleLines(e)
4950
}
5051

52+
const { refreshKey } = useRefreshKey([width, lines, html, custom])
53+
5154
return (
5255
<>
5356
<EW.Range
@@ -87,6 +90,7 @@ export const ControllableShowMore: React.FC<{
8790

8891
<EW.Container style={{ width: `${width}%` }}>
8992
<ShowMore
93+
key={refreshKey}
9094
ref={ref}
9195
lines={lines}
9296
separator={isZh ? '' : ' '}

docs/src/hooks/use-refresh-key.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { useEffect, useState } from 'react'
2+
3+
export const useRefreshKey = (deps: unknown[]) => {
4+
const [refreshKey, setRefreshKey] = useState(Date.now())
5+
6+
useEffect(() => {
7+
requestAnimationFrame(() => {
8+
setRefreshKey(Date.now())
9+
})
10+
}, [deps])
11+
12+
return {
13+
refreshKey,
14+
}
15+
}

0 commit comments

Comments
 (0)