javascript - 在下拉菜单包装器组件中呈现这些排序按钮?
问题描述
解决方案
我能够通过有条件地将元素渲染为
下拉菜单(使用样式化组件)
const Dropdown = styled.label`
display: inline-block;
position: relative;
font-weight: lighter;
font-size: 18px;
font-family: "Open Sans", sans-serif;
float: right;
padding: 0 20px;
height: auto;
margin: 10px 0px 0px;
`
const Menu = styled.div`
display: inline-block;
background: #007c92;
color: #fff;
border-radius: 2px;
border: 0;
box-shadow: inset 0 0 1px 1px rgba(0, 0, 0, 0.1);
padding: 10px 30px 10px 20px;
cursor: pointer;
white-space: nowrap;
`
const List = styled.ul`
position: absolute;
top: 100%;
padding: 0;
margin: 2px 0 0 0;
box-shadow: 0 0 6px 0 rgba(0,0,0,0.1);
background-color: #ffffff;
list-style-type: none;
z-index: 99999;
li {
padding: 10px 20px;
cursor: pointer;
white-space: nowrap;
}
`
const Input = styled.input`
display: none;
+ .dd-menu {
display: none;
}
:checked + .dd-menu {
display: block;
}
`
class DropdownWrapper extends React.Component {
constructor(props) {
super(props)
}
render() {
return (
<div>
<Dropdown className="dropdown">
<Menu className="dd-button">
Sort By:
</Menu>
<Input type="checkbox" className="dd-input" />
<List className="dd-menu">
{this.props.children}
</List>
</Dropdown>
</div>
)
}
}
条件排序:
if (!isMobile) {
return (
<a
key={field}
className={fieldValue ? 'btn-sort name active' : 'btn-sort name'}
onClick={sortBy}>
<Capitalized>{field}</Capitalized> {icon}
</a>
)
} else if (isMobile) {
return (
<li
key={field}
className={fieldValue ? 'btn-sort name active' : 'btn-sort name'}
onClick={sortBy}>
<Capitalized>{field}</Capitalized> {icon}
</li>
)
}
}
推荐阅读
- c# - 未选中时 C# asp.net 复选框未触发
- ios - swift xcode IOS,选择搜索结果后返回tableview
- firebase - 将 Gatsby 站点部署到 Firebase CDN 时,Gatsby Cloud 似乎没有使用 firebase.json 文件
- r - 当输入元素动态变化时,如何防止在闪亮的情况下多次绘制绘图
- wix3.7 - 在一个 .wxs 文件中创建 32 位和 64 位安装程序时出现注册表项问题
- angular - Angular 8:NullInjectorError - 没有 HighContrastModeDetector 的提供者
- c# - ASP.NET CORE 将业务逻辑添加到模型而不是控制器
- go - (GoLANG) *sql.DB 将行扫描成字符串数组指针
- javascript - 递归程序打印数字的问题
- javascript - 具有私有/受保护属性的 ES6 类