1

https://primefaces.org/primereact/showcase/#/tieredmenu

错误:-

 Uncaught TypeError: Cannot read property 'currentTarget' of undefined
        at TieredMenu.show (TieredMenu.js:84)
        at TieredMenu.toggle (TieredMenu.js:65)
    at dropdown._this.showDrp (dropdown.jsx:388)

分层菜单.js:84 分层菜单.js:65

  _createClass(TieredMenu, [{
    key: "toggle",
    value: function toggle(event) {
      if (this.props.popup) {
        if (this.container.offsetParent) this.hide(event);else this.show(event);
      }
    }
  }, {
    key: "show",
    value: function show(event) {
      var _this = this;

      if (this.props.autoZIndex) {
        this.container.style.zIndex = String(this.props.baseZIndex + _DomHandler.default.generateZIndex());
      }

      this.container.style.display = 'block';
      setTimeout(function () {
        _DomHandler.default.addClass(_this.container, 'p-menu-overlay-visible');

        _DomHandler.default.removeClass(_this.container, 'p-menu-overlay-hidden');
      }, 1);

      _DomHandler.default.absolutePosition(this.container, event.currentTarget);

      this.bindDocumentListeners();

      if (this.props.onShow) {
        this.props.onShow(event);
      }
    }
  }, 

下拉.jsx

menu = React.createRef();
   showDrp = () => {
        var refs = this.menu;
        if (refs && refs.current) refs.current.toggle();  // <-====
    }

 < i className="p-icon kr-ellipsis" onClick={(e) => this.showDrp()} aria-haspopup aria-controls="overlay_tmenu"></i>


 <div className="dropDownBoX">
                <TieredMenu model={obj} popup ref={this.menu} id="overlay_tmenu" />
            </div>
4

1 回答 1

0

此错误表明您没有将事件对象传递给toggle函数。您需要稍微修改您的代码,以便在单击按钮时触发的事件进入toggle函数。

menu = React.createRef();
showDrp = (e) => {
  var refs = this.menu;
  if (refs && refs.current) refs.current.toggle(e); // <-====
};

<i
  className="p-icon kr-ellipsis"
  onClick={this.showDrp}
  aria-haspopup
  aria-controls="overlay_tmenu"
></i>;


<div className="dropDownBoX">
  <TieredMenu model={obj} popup ref={this.menu} id="overlay_tmenu" />
</div>;
于 2020-09-25T12:51:32.957 回答