javascript - 如何在语义 UI 下拉菜单组件中的 React 组件中使用条件

标签 javascript reactjs semantic-ui-react

我想构建一个小下拉菜单(我使用的是semantic-ui-react)。但就我而言,我需要一个取决于此菜单部分的条件。

这是我想出的,但它行不通,因为它必须被包装。那么,如果 ifThisIsTrue 具有真值,我应该如何以正确的方式创建此下拉菜单以获得两个带有标题、分隔符和项目的菜单子(monad) block ?

render() {
    const ifThisIsTrue = true
    return (
        <Dropdown icon='cogs' className='icon settings'>
            <Dropdown.Menu>
                {
                    ifThisIsTrue &&
                        <Dropdown.Header icon='cogs' content='Label' />
                        <Dropdown.Divider />
                        <Dropdown.Item value='default'>Standard</Dropdown.Item>
                        <Dropdown.Item value='something'>Something</Dropdown.Item>
                        <Dropdown.Item value='else'>Else</Dropdown.Item>
                }

                <Dropdown.Header icon='cogs' content='Edit' />
                <Dropdown.Divider />
                <Dropdown.Item>Delete</Dropdown.Item>
                <Dropdown.Item>Edit</Dropdown.Item>
            </Dropdown.Menu>
        </Dropdown>
    )
}

最佳答案

将条件元素包装在数组中(当然用逗号分隔)。您需要为每个项目提供一个 key 属性。 React 会处理剩下的事情。

const Component = ({ifThisIsTrue}) => (
  <ul>
    <li>One</li>
    { ifThisIsTrue && [
        <li key="2">Two</li>,
        <li key="3">Three</li>
      ]
    }
  </ul>
);

ReactDOM.render(<Component ifThisIsTrue={Math.random() > 0.5}/>, document.querySelector('div'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div></div>

关于javascript - 如何在语义 UI 下拉菜单组件中的 React 组件中使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680196/

相关文章:

javascript - 从 JavaScript 中的数组中删除索引未知的项的更好方法

javascript - 嵌入雅虎!使用 IE11 的视频失败

javascript - 如何缩放包含 SVG 的 div?

javascript - React.js 如何使用 getElementById 方法获取 props 中的 id?

javascript - 语义 UI React Transition Group 为第一个元素设置动画

javascript - 我是 EFFIN 网站 build 新手。脚本就像驾驶航天飞机

reactjs - 用 enzyme 浅渲染找不到元素

javascript - 当我尝试在组件中使用 antd 的表单时,无法读取未定义的属性 'getFieldDecorator'

reactjs - 如何在 Semantic React UI 中扩展 Input 的宽度大小?

javascript - 当焦点位于输入字段时,为什么 React 中的日期选择器会闪烁?