gpt4 book ai didi

javascript - 如何以编程方式关闭 Material-Ui DropDownMenu

转载 作者:行者123 更新时间:2023-11-28 03:49:36 25 4
gpt4 key购买 nike

http://www.material-ui.com/#/components/dropdown-menu

由于样式问题,我必须更改 Material-ui DropdownMenu 内组件的顺序。

但是现在某些按钮 (renderNavLink) 在单击后不会关闭下拉菜单。

<小时/>

我的渲染:

render() {
return (
<ToolbarGroup>
<DropdownMenu value={defaultSelection} className="quick-dropdown">
{this.renderMenuItems()}
</DropdownMenu>
</ToolbarGroup>
);
}

renderMenuItems 方法

问题出在 renderNavLink 函数内部

renderMenuItems() {
return menuItems.map((item, i) => {
if (item.to) return renderNavLink(i, item, closeMenu);
return renderClickable(i, item, this.props);
});
}

renderNavLink 函数

我添加了 closeMenu 函数,但它所做的只是 console.log atm

const renderNavLink = (i, { to, primaryText: value }, closeMenu) => (
<NavLink
key={i}
to={to}
style={navLink.default}
onClick={closeMenu}
>
<MenuItem key={i} value={value}>
{value}
</MenuItem>
</NavLink>
);

关闭菜单

const closeMenu = () => {
console.log('closeMenu...');
};

完整组件代码

/* eslint-disable react/no-array-index-key */
import React from 'react';
import { NavLink } from 'react-router-dom';
import { connect } from 'react-redux';

// Material UI Components
import { ToolbarGroup } from 'material-ui/Toolbar';
import DropdownMenu from 'material-ui/DropDownMenu';
import MenuItem from 'material-ui/MenuItem';

// Actions
import { closeModal, setModal } from 'actions/Modals';

// Styles
import { navLink } from 'components/Styles/material';

// Copy
import { MODAL_CREATEDRAFT_NAME } from 'copy';

// Utils
import { cleanMapStateToProps } from 'utils';

const menuItems = [{
primaryText: 'Quick Menu',
className: 'quickmenu-navlink'
}, {
primaryText: 'Create Draft',
className: 'quickmenu-navlink',
modal: MODAL_CREATEDRAFT_NAME
}, {
primaryText: 'My Drafts',
to: '/drafts/mine'
}, {
primaryText: 'Active Drafts',
to: '/drafts/active'
}, {
primaryText: 'Archived Drafts',
to: '/drafts/archived'
}, {
primaryText: 'Environment Status',
to: '/drafts/environments'
}];

const defaultSelection = menuItems[0].primaryText;

const renderNavLink = (i, { to, primaryText: value }, closeMenu) => (
<NavLink
key={i}
to={to}
style={navLink.default}
onClick={closeMenu}
>
<MenuItem key={i} value={value}>
{value}
</MenuItem>
</NavLink>
);

const renderClickable = (i, {
modal, onClick, className, primaryText: value
}, {
setModal: setModalAction
}) => (
<MenuItem
key={i}
value={value}
primaryText={value}
style={navLink.special}
className={className || ''}
onClick={modal ? () => setModalAction(modal) : onClick}
/>
);

const closeMenu = () => {
console.log('closeMenu...');
};

class QuickMenu extends React.Component {
componentWillReceiveProps(nextProps) {
const { currentDraft } = nextProps;

if (currentDraft && currentDraft.id) {
this.props.closeModal();
}
}

renderMenuItems() {
return menuItems.map((item, i) => {
if (item.to) return renderNavLink(i, item, closeMenu);
return renderClickable(i, item, this.props);
});
}

render() {
return (
<ToolbarGroup>
<DropdownMenu value={defaultSelection} className="quick-dropdown">
{this.renderMenuItems()}
</DropdownMenu>
</ToolbarGroup>
);
}
}

export const QuickMenuJest = QuickMenu;

const mapDispatchToProps = dispatch => ({
closeModal: (...args) => { dispatch(closeModal(...args)); },
setModal: (...args) => { dispatch(setModal(...args)); }
});

export default connect(cleanMapStateToProps(['location', 'currentDraft']), mapDispatchToProps)(QuickMenu);

最佳答案

我的问题是 CSS 问题,使用以下类修复了它

render() {
return (
<ToolbarGroup>
<DropdownMenu value={defaultSelection} className="quick-dropdown">
{this.renderMenuItems()}
</DropdownMenu>
</ToolbarGroup>
);
}
<小时/>
.quick-dropdown {
position: fixed !important;
right: -20px !important;
}

关于javascript - 如何以编程方式关闭 Material-Ui DropDownMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com