首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应材料-UI Popper - popper ref不起作用

反应材料-UI Popper - popper ref不起作用
EN

Stack Overflow用户
提问于 2020-11-11 08:20:37
回答 1查看 4.6K关注 0票数 2

我试图实现这样的行为,当打开的时候,它的底部超过了窗口的底部,它的位置将会改变(从‘右’到‘右’)。

我想从裁判那里得到底位,看看它是否通过了底部。问题是,无论我尝试什么,ref.current都是空的。

到目前为止,我尝试了以下几点:

  1. 将ref对象传递给Popper组件,支持ref和popperRef。在useEffect上,电流为零。
  2. 将ref对象传递给div -- popper包装。同样,在useEffect上,当前属性为空。
  3. 将回调传递给popper ref/popperRef-props,并传递给其包装的div。ref回调在挂载时不会被调用。
  • 我确实注意到,useEffect是在弹出器显示在屏幕上之前执行的。

Popper组件-将回调传递给ref到包装的div的示例

代码语言:javascript
复制
const customPopper = ({
 popperRef = (popperElement) => {}
}) => {
  const useStyles = makeStyles({
    Popper: { ...popperStyle, ['z-index']: '9999' }
  })
  const styles = useStyles();

  return (
    <Popper
      className={styles.Popper}
      placement={placement}
      open={open}
      anchorEl={anchorEl}
    >
      <ClickAwayListener onClickAway={handleClickAway}>

        <div ref={popperRef}>

          <CalendarPopover
            className={st(classes[calendarPopoverClass], { isMobile })}
            isShown
            withArrow={false}
            title={title}
            onClose={handleCloseClick}
          >
            {children}
          </CalendarPopover>
        </div>
      </ClickAwayListener>
    </Popper >
  )

父组件参考处理程序

代码语言:javascript
复制
 const popperRefHandler = (popperRef: React.MutableRefObject<HTMLDivElement>) => {
    const popperBottom = popperRef.current.getBoundingClientRect().bottom;
    console.log('hello from popper mount in agenda cell, popper-bottom: ', popperBottom);

  }

编辑1-沙箱示例

https://codesandbox.io/s/material-ui-issue-forked-zy11e?file=/src/index.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-24 08:30:42

它在传递回调时起作用。它传递的参数是DOM元素,不像在RefObject中那样具有当前属性:

实例化

材料用户界面团队的大任务,用于帮助:https://github.com/mui-org/material-ui/issues/23484

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64782795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档