React 相关

# React 相关

点击查看示例
基础封装
import { forwardRef, useImperativeHandle, useRef, useState } from "react"
import { Modal } from "antd"

export type ModalPayload = {
  onOk?: () => void
  onCancel?: () => void
}

export interface ModalProps {
  show: (payload: ModalPayload) => void
}

const TestModal = forwardRef<ModalProps>((_props, ref) => {
  const [open, setOpen] = useState(false)
  const payloadRef = useRef<EStockOrderModalPayload>({})

  useImperativeHandle(
    ref,
    () => ({
      show(payload) {
        payloadRef.current = payload
        setOpen(true)
      },
    })
  )

  const wrapWithClose = (method?: () => void) => () => {
    setOpen(false)
    if (method) {
      method()
    }
  }

  return (
    <>
      <Modal
        open={open}
        onOk={wrapWithClose(payloadRef.current.onOk)}
        onCancel={wrapWithClose(payloadRef.current.onCancel)}
        closable={false}
      >
        <div>123123213</div>
      </Modal>
    </>
  )
})

TestModal.displayName = 'TestModal'
export default TestModal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

# 待学

  • HOC 高阶组件(Class/Function Component)

  • useMemo 缓存进阶