列表页筛选组件设计

UI 稿

功能描述

  • 默认选中全部,即获取全部列表数据。当点击“通识类”或“实训类”按钮时,切换选中选项,改变路由,并重新获取列表数据。

API

  • 全部、通识类、实训类分别用id 表示为 -1,1,2
  • 默认不带查询参数时会获取全部数据列表
  • 当选择实训或通识时,传入对应的id, 如 /api/courseware/list?propertyId=id

Component: Filter

Props

  • options: [{id: -1, title:"全部”},{id: 1, title: "通识类“},{id: 2, title: "实训类”}], 用于渲染筛选项文字和给每个选项绑定id
  • currentId: 当属性不存在时,默认为“-1"
  • handleChange: 当筛选按钮被点击时调用,传递 id 作为参数

代码

import React from 'react'
import cx from 'classnames'
import styles from './Filter.scss'

const Filter = ({ options, currentId, handleChange }) => {
  const optionsList = options.map(item => (
    <button
      key={item.id}
      className={cx(styles.item, {
        [styles.active]: item.id === currentId,
      })}
      onClick={() => {
        handleChange(item.id)
      }}
    >
      {item.name}
    </button>
  ))

  return (
    <div className={styles.root}>
      <div className={styles.title}>性质</div>
      <div className={styles.options}>
        {optionsList}
      </div>
    </div>
  )
}

export default Filter

页面组件

Props

  • history: 用于改变路由

Action

  • fetchCoursewareList
    • 参数:选项对应的id, 仅当不为-1时
    • 返回值:课件列表相关数据, 用于渲染页面

componentWillReceiveProps

属性改变时会自动触发该函数,需比较当路由不同时,调用fetchCoursewareList Action。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,937评论 0 17
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,611评论 5 20
  • 我是爱你的,我所知的最重要的事情,是我是爱你的。我爱你这件事,与许许多多的客观的事实无关,也忽视那些我所不知的。我...
    Rsnzj阅读 1,234评论 0 0
  • 陈列设计书单 1.光线色彩 色彩与光线 实用灯光与颜色 2.生活中的符号 符号学 3.颜色 素材库 世界门店橱窗设...
    Gemini77阅读 1,468评论 0 0

友情链接更多精彩内容