如何修改数组中某个项的某个属性值同时更新界面



  • ScrollView 代码:
    <ScrollView style={{height : 300}}>
    {this.state.filterList.map(
    (item,i) => <View key={item.key}>
    <View style={styles.listItem}>
    <Image source={item.img} style={{width:30,height:30}}></Image>
    <TouchableOpacity onPress={() => this.touchItem(item.key)}>
    <Text style={{flex:1,marginLeft:30}}>
    <Text style={{color : "#454545"}}>{item.title + '\n'}</Text>
    <Text style={{color : "#969696"}}>{item.des}</Text>
    </Text>
    </TouchableOpacity>
    </View>
    </View>
    )}
    </ScrollView>
    touchItem代码
    touchItem(i){
    this.state.filterList[i].des = getRandom(10,10000) + "";
    this.forceUpdate();
    }
    这样可以更新界面,但是发现很卡,估计是全部刷新了,但我只想局部刷新,有其他方法吗?


  • administrators

    1、修改state只能是通过setState方法,而不能直接修改(哪怕你只改数组中的一项,也还得把整个数组再set回去
    2、不要用forceUpdate方法
    3、如果想提高性能,请使用immutable.js



  • 好的,我还想问listView怎么增删查改?


  • administrators

    无非是单纯的数组换成了datasource 上述三条一样适用


登录后回复