反应波普尔。如何相对父元素移动?

时间:2019-01-14 22:41:23

标签: popper.js react-popper

我正在尝试移动父组件内部的Popper。我该怎么办?

我尝试在修饰符对象中使用offset属性。 例如:

offset: {
  offset: 20,
}

但是偏移只能使Popper朝一个方向移动。如果placement = {'top'|| 'bottom'} =>如果放置= {'right'||,它会左右移动。 'left'} =>它上下移动。

const Layer = ({
  children,
  align,
  inner = true,
  parent,
  portal,
}) => (
  <Manager>
    <Popper
      placement={align}
      modifiers={{
        inner: {
          enabled: inner,
        },
      }}
      referenceElement={parent}
    >
      {({ ref, style, placement }) => (
        <div
          ref={ref}
          data-placement={placement}
          style={style}
        >
          {console.log(style)}
          {children}
        </div>
      )}
    </Popper>
  </Manager>
)

2 个答案:

答案 0 :(得分:1)

只需处理:Place MaterialUI Tooltip "on top" of anchor element? (React)

PopperProps={{
  popperOptions: {
    modifiers: {
      flip: { enabled: false },
      offset: {
        enabled: true,
        offset: '20px 20px'
      }
    }
  }
}}

答案 1 :(得分:0)

我这样解决了。为popper child添加了topOffsetleftOffset道具,并使用了扩展语法。不要以为这是最干净的解决方案。

const Layer = ({
  children,
  align,
  inner = true,
  parent,
  portal,
  topOffset,
  leftOffset,
}) => (
  <Manager>
    <Popper
      placement={align}
      modifiers={{
        inner: {
          enabled: inner,
        },
      }}
      referenceElement={parent}
    >
      {({ ref, style, placement }) => (
        <div
          ref={ref}
          data-placement={placement}
          style={{
            ...style,
            top: style.top + topOffset,
            left: style.left  + leftOffset,
          }}
        >
          {console.log(style)}
          {children}
        </div>
      )}
    </Popper>
  </Manager>
)