淘先锋技术网

首页 1 2 3 4 5 6 7

点击取消&确定按钮高亮——解构对象-{…menuStatus} & 不高亮-newMenuStatus[type] = false

点击取消按钮高亮

// 点击取消按钮高亮
handleClose = (type) => {
  // 控制弹窗的关闭操作,并且处理菜单的高亮
  // 判断当前的菜单是否应该高亮:依据就是是否选中了值
  let { menuStatus, menuValue } = this.state
  // 复制一份默认状态
  let newMenuStatus = {...menuStatus}
  // 当前的菜单值
  let v = menuValue[type]
  // 判断标题菜单是否选中:与默认数据对比
  if (type === 'area' && (v.length === 3 || v[0] !== 'area')) {
    // 区域筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'mode' && v[0] !== 'null') {
    // 方式筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'price' && v[0] !== 'null') {
    // 租金筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'more' && v.length !== 0) {
    // 第四项筛选 高亮
    // 后面实现了 FilterMore 组件后,再补充
    newMenuStatus[type] = true
  } else {
    // 不高亮
    newMenuStatus[type] = false
  }
  this.setState({
    openType: '',
    menuStatus: newMenuStatus
  })
}

点击确定按钮高亮

// 点击确定按钮高亮
onSave = (v, type) => {
  // 点击下拉列表的确定按钮触发
  // Filter -> FilterPicker -> FilterFooter
  // 把列表选中的值进行存储
  // -------------------------------
  // this.setState({
  //   menuValue: {
  //     ...this.state.menuValue,
  //     [type] : value
  //   }
  // })
  // --------------------------------
  // 先复制一份原始的数据
  let { menuStatus, menuValue } = this.state
  let mvalue = {...menuValue}
  let newMenuStatus = {...menuStatus}
  // 判断相应菜单是否选中
  if (type === 'area' && (v.length === 3 || v[0] !== 'area')) {
    // 区域筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'mode' && v[0] !== 'null') {
    // 方式筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'price' && v[0] !== 'null') {
    // 租金筛选 高亮
    newMenuStatus[type] = true
  } else if (type === 'more' && v.length !== 0) {
    // 第四项筛选 高亮
    // 后面实现了 FilterMore 组件后,再补充
    newMenuStatus[type] = true
  } else {
    // 不高亮
    newMenuStatus[type] = false
  }
  mvalue[type] = v
  this.setState({
    menuValue: mvalue,
    menuStatus: newMenuStatus,
    openType: ''
  })
}

封装通用的状态判断逻辑

checkStatus = (type, v, newMenuStatus) => {
    // 封装通用的状态判断逻辑
    if (type === 'area' && (v.length === 3 || v[0] !== 'area')) {
      // 区域筛选 高亮
      newMenuStatus[type] = true
    } else if (type === 'mode' && v[0] !== 'null') {
      // 方式筛选 高亮
      newMenuStatus[type] = true
    } else if (type === 'price' && v[0] !== 'null') {
      // 租金筛选 高亮
      newMenuStatus[type] = true
    } else if (type === 'more' && v.length !== 0) {
      // 第四项筛选 高亮
      // 后面实现了 FilterMore 组件后,再补充
      newMenuStatus[type] = true
    } else {
      // 不高亮
      newMenuStatus[type] = false
    }
  }

调用封装的方法