react-開(kāi)發(fā)經(jīng)驗(yàn)分享-后端請(qǐng)求數(shù)據(jù)后進(jìn)行本地存儲(chǔ)篩選

Author:Mr.柳上原

  • 付出不亞于任何的努力
  • 愿我們所有的努力,都不會(huì)被生活辜負(fù)
  • 不忘初心,方得始終

后端接口請(qǐng)求到數(shù)據(jù)后存儲(chǔ)到本地進(jìn)行數(shù)據(jù)篩選的方法
此方法使用了對(duì)象對(duì)比和模糊查找
使用了原生es6開(kāi)發(fā)
實(shí)現(xiàn)方法如下:

// 后端接口請(qǐng)求到數(shù)據(jù)
// 數(shù)據(jù)存儲(chǔ)到state里
// 獲取表單輸入值,并用表單里的值對(duì)數(shù)據(jù)進(jìn)行篩選

// 使用state來(lái)存儲(chǔ)后端數(shù)據(jù)并動(dòng)態(tài)更新
this.state = {
  projectData: [], // 后端數(shù)據(jù)
}
// 
    handleSubmit = (e) => {
        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            if (!err) {
                console.log('Received values of form: ', values); // values為表單獲取到的用戶輸出值,格式為{xx:xx, xx:xx, xx:xx, ......}

                // 本地?cái)?shù)據(jù)篩選
                let newValues = {};
                for (let key in values) {
                   switch(values[key]) {
                     case '項(xiàng)目名稱': {
                         newValues.name = values.name;
                         break;
                      }
                      case '開(kāi)發(fā)商名稱': {
                          newValues.developerName = values.name;
                          break;
                       }
                       case values.name: 
                           break;
                        default: {
                            if (typeof values[key] !== 'undefined') {
                                 newValues[key] = values[key]
                              }
                           }
                      }
               }

                let data = this.state.projectData; // 后端獲取到的數(shù)據(jù),格式為數(shù)組
                // 取出數(shù)組里的每一項(xiàng)(item為對(duì)象),與用戶的輸出(對(duì)象)值對(duì)比
                let newData = data.filter(item => Object.keys(newValues).every(key => typeof item[key] === 'string'
                ? item[key].includes(newValues[key])
                 : item[key] === newValues[key]));

               console.log('newValues', newValues);
               console.log('newData', newData);

                this.setState({
                   projectData: newData,
                })
            }
        })
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,328評(píng)論 2 89
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,691評(píng)論 1 32
  • 尚俊平,焦點(diǎn)網(wǎng)絡(luò)中級(jí),堅(jiān)持分享713天,2018年4月1日,周日 我對(duì)去公式化的理解是這樣的:不用現(xiàn)在的成功標(biāo)準(zhǔn)去...
    32598db751bb閱讀 267評(píng)論 0 0
  • 前兩天在簡(jiǎn)書(shū)上寫(xiě)了一篇文章聽(tīng)說(shuō)你是個(gè)“時(shí)尚博主”,分享到了微信朋友圈,一分鐘內(nèi)收到好多留言,朋友們紛紛以為我是詐尸...
    涼姨閱讀 575評(píng)論 0 3
  • 首先,兩者都是比較器,主要用來(lái)對(duì)集合進(jìn)行排序。廢話不多說(shuō),直接上代碼,來(lái)看看兩者的區(qū)別 Comparable 可以...
    sofarsogoo_932d閱讀 333評(píng)論 0 0

友情鏈接更多精彩內(nèi)容