childDidMount.jsx 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import React, { useEffect, useRef, useState } from 'react';
  2. import { Form, Row, Col } from '@douyinfe/semi-ui';
  3. import MyRadio from './myRadio';
  4. export default function Demo() {
  5. const formRef = useRef(null);
  6. const [checkboxValue, setValue] = useState(false);
  7. useEffect(() => {
  8. console.log('didMount outer');
  9. }, []);
  10. return (
  11. <Form
  12. ref={formRef}
  13. style={{ padding: 10, width: '100%' }}
  14. >
  15. <Row>
  16. <Col span={12}>
  17. {/* 为了避免子组件重新mount,需要在函数为抽取为单独的组件,或者在函数内useMemo、useCallback下 */}
  18. {/* 否则setState引起子组件重新mount会重新消费initValue,可能会造成不符合预期的结果 */}
  19. {/* 如点击Radio后并没有选中点击项,而选中的是initValue */}
  20. <MyRadio formRef={formRef} setValue={setValue} />
  21. </Col>
  22. </Row>
  23. <div>checkboxValue: {`${checkboxValue}`}</div>
  24. </Form>
  25. );
  26. }