我正在尝试更新列表,但即使状态正在更改,列表也不会重新呈现,除非我刷新页面。我还没有给出索引作为键,但列表没有重新呈现。知道为什么吗?
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>
答案 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]);
}