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,
})
}
})
}