根据本机中的复选框更改查询字符串参数

时间:2019-05-27 18:42:44

标签: javascript reactjs react-native

选中一个框以过滤结果时,我能够成功运行此代码:

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中删除未选中的框。

1 个答案:

答案 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 })
};

从这里您需要连接到代码并进行查询... 告诉我是否可以