Skip to content

Commit bd7fa8a

Browse files
committed
fix(form): fix svg rerender & timer memory leak
1 parent d51bfa4 commit bd7fa8a

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

packages/form/src/component/Form/index.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ChangeEvent, FC, KeyboardEvent, memo, MouseEvent, useEffect, useRef, useState } from 'react';
1+
import React, { ChangeEvent, FC, KeyboardEvent, memo, MouseEvent, useEffect, useMemo, useRef, useState } from 'react';
22

33
import classNames from 'classnames';
44
import hlogo from '../../asset/img/hlogo.png';
@@ -56,8 +56,10 @@ const Form: FC<FormProps> = memo(props => {
5656
const canGetCode = checkPhone(phone);
5757

5858
useEffect(() => {
59-
return () => window.clearInterval(interval);
60-
}, [interval]);
59+
if (code.time === 0) {
60+
window.clearInterval(interval);
61+
}
62+
}, [code]);
6163

6264
const handleSubmit = async () => {
6365
const info = { ...formInfo, group: (GROUPS[group] || '').toLowerCase(), title };
@@ -141,7 +143,6 @@ const Form: FC<FormProps> = memo(props => {
141143
window.setInterval(() => {
142144
setCode(({ time, sent }) => {
143145
if (time === 0) {
144-
clearInterval(interval);
145146
return { time: 0, sent: false };
146147
}
147148
return { time: time - 1, sent };
@@ -240,13 +241,13 @@ const Form: FC<FormProps> = memo(props => {
240241
['成绩排名', 'rank', RANKS, rank]
241242
] as [string, string, string[], number][]).map(v => {
242243
return (
243-
<Select
244+
useMemo(() => <Select
244245
key={v[1]}
245246
selections={v[2]}
246247
value={v[2][v[3]] || ''}
247248
defaultValue={v[0]}
248249
handleSelect={handleChangeFormInfo(v[1])}
249-
/>
250+
/>, [v[3]])
250251
);
251252
});
252253

0 commit comments

Comments
 (0)