首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrimeReact菜单未编译

PrimeReact菜单未编译
EN

Stack Overflow用户
提问于 2021-10-11 17:37:57
回答 1查看 247关注 0票数 1

我正在尝试让一个PrimeReact弹出菜单在文档后面工作。

我用tsx创建了一个新项目。

我试过了

代码语言:javascript
复制
import 'primereact/resources/themes/saga-blue/theme.css'
import 'primereact/resources/primereact.min.css'
import 'primeicons/primeicons.css'
import {Menu} from "primereact/menu";
import {useRef} from "react";

const Header = () => {
    let menu = useRef(null);
    let items = [
        {icon: 'pi pi-cog', label: 'Configuration'},
        {icon: 'pi pi-info-circle', label: 'About'}
    ];
    return(
        <div className="header">
            <div><i className="pi pi-chevron-left"></i></div>
            <div>Test</div>
            <Menu model={items} popup ref={menu} id="popup_menu" />
            <div><i className="pi pi-ellipsis-v" onClick={(event) => menu.current.toggle(event)} aria-controls="popup_menu" aria-haspopup/></div>
        </div>
    );
}

export default Header

在编译时给了我

代码语言:javascript
复制
Object is possibly 'null'.  TS2531

    19 |             <div>Test</div>
    20 |             <Menu model={items} popup ref={menu} id="popup_menu" />
  > 21 |             <div><i className="pi pi-ellipsis-v" onClick={(event) => menu.current.toggle(event)} aria-controls="popup_menu" aria-haspopup/></div>
       |                                                                      ^
    22 |         </div>
    23 |     );
    24 | }

我错过了什么?

我还尝试用jsx而不是tsx创建一个新项目。

而且起作用了。所以问题来自tsx。

但为什么?以及如何解决这个问题?

我终于找到了解决办法

使用

代码语言:javascript
复制
let menu = useRef`<Menu>`(null);

代码语言:javascript
复制
onClick={(event) => menu?.current?.toggle(event)}
EN

回答 1

Stack Overflow用户

发布于 2022-04-06 10:17:04

我今天有个问题。OP的解决方案让我很困惑。我复制、粘贴了OP发布的内容,即:

代码语言:javascript
复制
let menu = useRef`<Menu>`(null);

但这是行不通的。我不完全确定这是否适用于OP或什么的,但对于我来说,解决方案是使用以下方法:

代码语言:javascript
复制
let menu = useRef<Menu>(null);

我的菜单组件如下所示:

代码语言:javascript
复制
<Menu model={menuItems} popup ref={menu} aria-controls="popup_menu" aria-haspopup />

我显示菜单的按钮是这样的:

代码语言:javascript
复制
<Button icon="pi pi-bars" onClick={(event) => menu.current?.toggle(event)}/>

如果有人正在复制粘贴这个以进行测试,我在menuItems中使用了以下内容:

代码语言:javascript
复制
const menuItems = [
    {label: 'New', icon: 'pi pi-fw pi-plus'},
    {label: 'Delete', icon: 'pi pi-fw pi-trash'}
];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69530377

复制
相关文章

相似问题

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