antdmessage使用_怎么把一个react组件封装成像antd中message.info(‘123’),这种函数调用的组件?...

我在使用react-viewer,但是每次都要在render中写这个标签,因为项目中使用的地方很多,标签上绑定的参数变量也需要在state中定义,这其实挺麻烦的,我想把这个react-viewer组件封装成类似antd中message那种函数调用的组件,希望能弄成这样的:

import MyViewer from './MyViewer/index';

preview = (images) => {

MyViewer(images);

}

回答

import ReactDOM from ‘react-dom’

ReactDOM.createPortal(child, container)

谈不上黑魔法,你看看antd的实现就清楚了,其实就是api的理解 和 使用问题。

给你个例子

import React from 'react'

import ReactDOM from 'react-dom'

import OriginViewer from 'react-viewer'

class Viewer {

static show({ images }: { images: Array }) {

const div = document.createElement('div')

document.body.appendChild(div)

const destroy = () => {

ReactDOM.unmountComponentAtNode(div)

}

ReactDOM.render(, div)

return destroy

}

}

export default Viewer

调用:

import React from 'react'

import { Viewer } from '@/components'

function Example() {

return (

onClick={() => {

Viewer.show({ images: [{ src: '/admin_avatar.png' }] })

}}

>

show

)

}

export default Example

这个仅仅作为思路提供给你(我都没试过),里面肯定还有其他需要调整的地方。千万不要盲目拿来直上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值