Closed xccjk closed 1 year ago
import React, { Component } from 'react' import { Modal, Button } from 'antd' class ClassPage extends Component { constructor(props) { super(props) this.state = { visible1: false, visible2: false } } render() { return ( <div> <Button type='primary' onClick={() => this.setState({visible1: true})}>按钮1</Button> <Button type='primary' onClick={() => this.setState({visible2: true})}>按钮2</Button> <Modal visible={this.state.visible1} onCancel={() => this.setState({visible1: false})} > modal1 </Modal> <Modal visible={this.state.visible2} onCancel={() => this.setState({visible2: false})} > modal2 </Modal> </div> ) } } export default ClassPage
逻辑进行抽取
import React, { useCallback, useState } from 'react' import { Modal, Button } from 'antd' function useTrigger(initialValue = false) { const [visible, setVisible] = useState(initialValue) const open = useCallback(() => { setVisible(true) }, [setVisible]) const close = useCallback(() => { setVisible(false) }, [setVisible]) return { visible, open, close } } function HooksPage () { const trigger = useTrigger() const trigger1 = useTrigger() return ( <div> <Button type='primary' onClick={trigger.open}>按钮1</Button> <Button type='primary' onClick={trigger1.open}>按钮2</Button> <Modal visible={trigger.visible} onCancel={trigger.close} > modal1 </Modal> <Modal visible={trigger1.visible} onCancel={trigger1.close} > modal2 </Modal> </div> ) } export default HooksPage
hooks的逻辑复用
场景
Component实现
hooks实现
逻辑进行抽取
,类似一个通用的处理函数总结