react native FlatList点击事件改变怎么改变单条数据状态?

在做购物车功能,我是把商品列表拆成FlatList遍历的。现在的问题是,点击加减号都会调用后台接口 改变当前商品购物车数量,可是用了FlatList,state取值 ,改变一个商品的数量,页面所有的数量都会变,如果不用state,在页面看不到数量的变化。可能描述的有点混乱,下面是截图的代码。

clipboard.png

//这是数量加减的方法。
 itemIncrease = (i,id,item) => {
        console.log(item)
        i++;
        this.changeNumberData(id,i)
    };

    itemReduce = (i,id,item) => {
        if (i <= 1) {
            return;
        }
        i--;
        // this.setState({ selNum : i },()=>{  //这里如果设置state的值,那么只要改变一个商品数量,页面所有商品的数量都会是相同的,刷新页面之后才会正常。
            item.number  = i;
            this.changeNumberData(id,i)
        // });
    };
 //商品的FlatList,item是每个商品的json
 _renderGoods(item){
    return(
        <FlatList data={item.goodsList}
                  renderItem={({ item}) => this._renderGoodsView(item)}
                  keyExtractor1={ this.keyExtractor1 }
                  extraData={this.state}
        />
    )
}
//这是商品的view,我只取了数量那里的代码
    _renderGoodsView(item){
        return(
            <View style={styles.moneyWrapRight}>
                <TouchableOpacity style={  [styles.reduceNum,{ backgroundColor : item.number <= 1 ? '#dcdcdc' : '#20a200' }] }
                                  onPress={() => this.itemReduce(item.number,item.id,item)}>
                    <Text style={[styles.numText,{color:"#fff"}] }>-</Text>
                </TouchableOpacity>
                <View style={ styles.numTextWrap }>
                    <Input style={styles.selNumText}
                           value={ `${ item.number }`}     keyboardType='numeric'   maxLength={3}
                           onChangeText={(text) => this.setState({selNum:this._text(text)})} />
                </View>
                <TouchableOpacity style={  [styles.reduceNum,{backgroundColor:"#20a200"}] }
                                  onPress={() => this.itemIncrease(item.number,item.id,item)}>
                    <Text style={[styles.numText,{color:"#fff"}] }>+</Text>
                </TouchableOpacity>
            </View>
         
        )
    }
阅读 7.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题