|
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'; |
2 | 2 |
|
3 | 3 | import classNames from 'classnames'; |
4 | 4 | import hlogo from '../../asset/img/hlogo.png'; |
@@ -56,8 +56,10 @@ const Form: FC<FormProps> = memo(props => { |
56 | 56 | const canGetCode = checkPhone(phone); |
57 | 57 |
|
58 | 58 | useEffect(() => { |
59 | | - return () => window.clearInterval(interval); |
60 | | - }, [interval]); |
| 59 | + if (code.time === 0) { |
| 60 | + window.clearInterval(interval); |
| 61 | + } |
| 62 | + }, [code]); |
61 | 63 |
|
62 | 64 | const handleSubmit = async () => { |
63 | 65 | const info = { ...formInfo, group: (GROUPS[group] || '').toLowerCase(), title }; |
@@ -141,7 +143,6 @@ const Form: FC<FormProps> = memo(props => { |
141 | 143 | window.setInterval(() => { |
142 | 144 | setCode(({ time, sent }) => { |
143 | 145 | if (time === 0) { |
144 | | - clearInterval(interval); |
145 | 146 | return { time: 0, sent: false }; |
146 | 147 | } |
147 | 148 | return { time: time - 1, sent }; |
@@ -240,13 +241,13 @@ const Form: FC<FormProps> = memo(props => { |
240 | 241 | ['成绩排名', 'rank', RANKS, rank] |
241 | 242 | ] as [string, string, string[], number][]).map(v => { |
242 | 243 | return ( |
243 | | - <Select |
| 244 | + useMemo(() => <Select |
244 | 245 | key={v[1]} |
245 | 246 | selections={v[2]} |
246 | 247 | value={v[2][v[3]] || ''} |
247 | 248 | defaultValue={v[0]} |
248 | 249 | handleSelect={handleChangeFormInfo(v[1])} |
249 | | - /> |
| 250 | + />, [v[3]]) |
250 | 251 | ); |
251 | 252 | }); |
252 | 253 |
|
|
0 commit comments