【问题标题】:How to make React-Material-UI Popper draggable?如何使 React-Material-UI Popper 可拖动?
【发布时间】:2021-10-03 03:47:51
【问题描述】:

我想用react-draggable动态改变屏幕上Popper的位置。

这是我的代码:

import PopupState, {bindPopper, bindToggle} from "material-ui-popup-state";

     ...
       return (
            <PopupState variant={"popper"} popupId='demo-popper'>
            {(popupState) => {
                // popupState.anchorEl = undefined <-- THIS WORKS BUT ERROR WITH 'anchorEl' IS RAISED
                return (
                    <div>
                        <Button variant="contained" color="primary" {...bindToggle(popupState)}>
                            Toggle Popper
                        </Button>
                        <Draggable defaultPosition={position}>
                            <Popper {...bindPopper(popupState)}
                                    transition
                                    className={classes.popper}
                                    placement='bottom-start'
                            >
                                <Paper elevation={5}>
                                    <Typography variant={"h2"} className={classes.typography}>
                                        POPUP BODY
                                    </Typography>
                                </Paper>
                            </Popper>
                        </Draggable>
                    </div>
                )
            }}
        </PopupState>
      )

...和CODE Sandbox

如您所见,当我使 popupState.anchorEl = undefined 拖动功能有效时,anchorEl 出现错误。

失败的道具类型:Material-UI:提供给组件的anchorEl 道具无效。 它应该是 HTML 元素实例或 referenceObject (https://popper.js.org/docs/v1/#referenceObject)。

当设置anchorEl 时,&lt;Draggable&gt; 不起作用。 我认为在每个组件渲染上,由于拖动,Popup 的位置正在改变,但由于设置了anchorEl,它会立即恢复默认值

Popper.js docs

有人知道如何解决这个问题吗?

【问题讨论】:

  • 我把anchorEl的值从undefined改成了null,效果很好。 codesandboxpopup.
  • @Medi 它也适用于undefined,但问题是在创建Popup 后控制台中出现警告。

标签: reactjs material-ui draggable react-typescript popper.js


【解决方案1】:

您不需要使用 Popper。 只需将 Draggable 组件与 Paper 一起使用即可。

https://codesandbox.io/s/react-material-ui-popup-draggable-forked-lmylb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 2021-06-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2019-07-26
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多