反应地图功能不重新渲染

时间:2021-02-02 11:26:39

标签: reactjs react-native

我正在尝试更新列表,但即使状态正在更改,列表也不会重新呈现,除非我刷新页面。我还没有给出索引作为键,但列表没有重新呈现。知道为什么吗?

js 文件

   function setSpecialty(lang,index){
        var buffarray=types;
        buffarray[index].checked=!buffarray[index].checked;
        setType(buffarray);       
   }
        <View style={[styles.inputviewstyle,{flexDirection:'column',alignItems:'center',justifyContent:'center'}]}>
            <Text style={{fontSize:30,fontFamily:"roboto",fontWeight:'bold'}}>Specialty:</Text>
            {types.map((lang,index)=>{
                return(
                    <View key={lang.id} style={{flexDirection:'row',alignItems:'center',justifyContent:'flex-start',width:200,marginLeft:100}}>
                        <CheckBox title={lang.Name} checked={lang.checked}  onPress={() => setSpecialty(lang,index)} />
                    </View>
                ); 
            })}
        </View>

1 个答案:

答案 0 :(得分:0)

你改变了相同的引用,你需要渲染一个副本,否则组件不会渲染。你可以试试这个代码

   function setSpecialty(lang,index){
        var buffarray= [...types];
        buffarray[index].checked=!buffarray[index].checked;
        setType(buffarray);       
   }

或者只是更改为:

   function setSpecialty(lang,index){
        var buffarray= types;
        buffarray[index].checked=!buffarray[index].checked;
        setType([...buffarray]);       
   }