无法设置数组的状态

时间:2018-06-08 04:54:43

标签: javascript reactjs

我想在用户输入以逗号分隔的字符串时找到社交媒体平台。我正在迭代每个逗号分隔的字符串,并检查它是否包含预定义的数组字符串上的任何字符串。它工作正常,但当我尝试设置状态时,它无法做同样的事情。

var social=["FACEBOOK","INSTAGRAM","PINTEREST","SINA","YOU","QUORA","GOOGLE","GITLAB",
                    "GITHUB","BLOGGER","MEDIUM","REDDIT","TWITTER","HACKERRANK","HACKEREARTH"]
        var socStr=e.target.value;
        var local=[];
        socStr=socStr.split(",");
        for(i=0;i<socStr.length;i++){
            for(j=0;j<social.length;j++){
                if(socStr[i].toUpperCase().includes(social[j])){
                    local=local.concat(social[j]);
                    console.log(local);
                    break;
                }
            }
            if(i===socStr.length-1){
                this.setState({
                    data:{
                        ...this.state.data,
                        socArr:local
                    }
                },()=>console.log(this.state.data.socArr))
            }
        }  

它正确打印了本地数组的值,但其值未设置为状态变量socArr。

1 个答案:

答案 0 :(得分:0)

为了更好的可读性,我重新编写了一些代码。下面的代码对我来说很好:

myData %>%
      mutate(reflectanceSfp = replace(reflectanceSfp, 
                                 bandNumber %in% badBands, NA))