Bootstrap 使用额外菜单项没有结果时显示空值

vojdkbi0  于 2023-09-28  发布在  Bootstrap
关注(0)|答案(2)|浏览(116)

我有一个Typeahead与自定义菜单使用renderMenu。我在下拉菜单的底部添加了2个自定义菜单项。一个分隔器和一个按钮。
当我不添加额外的项目,并且没有结果时,它显示空标签。当我添加额外的项目时,如果没有结果,它不会显示“空”标签,因为它认为它还有2个项目。
如何调整以反映没有结果但菜单中仍有内容的空值?

renderMenu = (results, menuProps) => {
            const { menuFooterButtonOptions } = this.props;
            
            // add all results from query
            const items = results.map((result, index) => (
                <MenuItem key={index} option={result} position={index}>
                    {menuProps.renderMenuItemChildren ? menuProps.renderMenuItemChildren(result, this.props, index) : result}
                </MenuItem>
            ));
            
            // add footerButton if needed
            if (menuFooterButtonOptions && menuFooterButtonOptions?.show) {
                const button = (
                    <MenuItem option={{key: "footerButton"}} onClick={(_) => {menuFooterButtonOptions.onClick();}} active={false}>
                        <span className={"btn-link"}>
                            {menuFooterButtonOptions.text}
                        </span>
                    </MenuItem>
                );
                items.push(<Menu.Divider />);
                items.push(button);
            }

            return (
                <Menu {...menuProps}>
                    {items}
                </Menu>
            );
        };
mfuanj7w

mfuanj7w1#

我通过在没有项目的时候添加一个空元素来解决它。

if (menuFooterButtonOptions && menuFooterButtonOptions?.show && (items.length < 1)) {
    items.push(<MenuItem disabled={true} active={false}><span>No matches found.</span></MenuItem>);
}
ffdz8vbo

ffdz8vbo2#

试试这个如果结果存在则呈现项,如果不存在则呈现空消息。

return (
            <Menu {...menuProps}>
                {results ? items: <MenuItem disabled={true} active={false}><span>No matches found.</span></MenuItem>}
            </Menu>
        );

相关问题