最近在写一个下拉框的组件,在pc是select,在移动端又变成Picker,在nextjs中怎么实现呢?
pc端select,有特点就是按钮在哪里,就在哪里下拉,而Picker是点击按钮,在底层弹出全屏。
实现这个功能就需要了解react在body中添加全局组件,让Picker放在最外层。
import ReactDOM from 'react-dom'
ReactDOM.createPortal(<div>aaaa</div>,document.body)
这样写报document is not defined错误!经过几番试验,调整如下:
import { useEffect, useState } from 'react'
import ReactDOM from 'react-dom'
export function CheckboxV2({}) {
const [isLoading, setisLoading] = useState(0)
useEffect(() => {
if (typeof window === "object") {
setisLoading(1)
}
}, [list, current])
return(
<>
{isLoading ? ReactDOM.createPortal(
<>
aaaaa
</>,
document.body
) : ""}
</>
)
}