picker组件如何过滤掉不可以选择的选项?

26 阅读1分钟

111.png

描述:picker不可以选择其他选项选择过的年份(例如资产原值yearArr)

解决思路:为每一个年份的选项设置可以选择的年份列表(yearArr[index])

//渲染的时候
<Picker
  extra={edit ? '请选择年份' : ' '}
  data={allEquipmentYearData[idx]}
  cols={1}
  value={[arrItem.year]}
  onOk={e=>{onPickerChange('equipmentAmountJson',idx,e)}}
  disabled={!edit}
>
//对需要渲染的数据进行处理
function transData(){
    if (fixedNetJson?.length > 0) {
      let addYearList = []
      //先获取页面上已经选择过的年份列表
      let fixedNetJsonYearList = fixedNetJson.map(res => res.year)
      fixedNetJson.forEach((resItem,index) => {
        let data = []
        for(let i = 1949; i < upYear; i++) {
          //设置每个选项可以选择的年份
          // = 剔除所有选中的年份+自己的年份
          if (!fixedNetJsonYearList.includes(i) || resItem.year == i) {
            data.push({ label:i, value:i })
          }
        }
        addYearList[index] = data
      })
      setAllFixedNetYearData(addYearList)
    } 
  }
function setAllFixedNetYearData(addYearList){
    fixedNetJson = addYearList
}