选中一个框以过滤结果时,我能够成功运行此代码:
changeCheck = (index, acronym) => {
if(!this.state.checkedLeagues.includes(acronym)){
this.state.checkedLeagues.push(acronym)
} else {
this.setState({checkedLeagues: this.state.checkedLeagues.filter(v => { return v !== acronym})})
}
this.state.checked[index] = !this.state.checked[index]
this.setState({ checked: this.state.checked })
queryString = []
console.log('newLeagues', newLeagues)
this.state.checkedLeagues.map(
(v, i) => {
if(queryString.length < 1) {
queryString.push(`?league=${v}`)
} else if (queryString.length >= 1 ) {
queryString.push(`&league=${v}`)
}
}
)
// console.log(queryString.join(''))
axios.get(`http://localhost:4000/reports${queryString.join('')}`)
.then(response => {
this.props.loadCards(response.data)
})
}
如果未选中某个框,则会出现问题。
如果它已经存在于this.state.checked中,我需要一种方法将未选中的框从queryString中移除。
已选中或未选中的值通过首字母缩写词传递给onPress / onClick。
编辑:
例如: 如果this.state.checkedLeagues是一个联赛['NBA','NFL']的数组,我只想将这些设置为axios get请求中的查询字符串参数。
如果我将checkedLeagues设置为['NBA','NFL'],则它会起作用。但是当我取消选中时,它不会;可以说我取消选中“ NBA”(当我说“取消选中”时,是指从queryString中删除),它没有,因为我没有一种机制可以从queryString中删除未选中的框。
答案 0 :(得分:0)
this.state = {
checkList: [],
};
checkInvoice = (index) => {
const { checkList } = this.state
const newCheckList = checkList;
const indexElem = newCheckList.indexOf(index);
if (indexElem > -1) {
newCheckList.splice(indexElem, 1);
} else {
newCheckList.push(index);
}
this.setState({ checkList: newCheckList })
};
从这里您需要连接到代码并进行查询... 告诉我是否可以