如何在Flatlist中更改textInput值以响应本机?

时间:2018-08-27 22:01:45

标签: javascript react-native

我正在使用需要修改数量的产品列表,但无法使用(+)和(-)按钮修改包含数量的inputText

感谢您的帮助。.谢谢

enter image description here

我无法使用stados,因为您一次只能更改一行

我想知道一个好方法,这样当我按下按钮时,每行中的数字都会被修改并尝试使用状态,但是我会更改所有输入的内容

代码:

<View style={styles.containerPro}>
    <List containerStyle={{borderTopWidth: 0,
       borderBottomWidth: 0}}
       key={this.state.coins.length}
       dataSource={this.state.number}>

          <FlatList
              extraData={this.state}
              data={this.state.coins}
              keyExtractor={(item) => item.id}
              renderItem={({item}) => {
                  let num = 0;
                  this.state={
                  numb :num,
                  };

               let url = 'http://laeconomiadelsur.com/upload/' + item.foto;
               const tableData = [
                  [<View>
                       <Image 
                          source={{uri: url}} 
                          style={{
                             width: 50,
                             height: 70,
                        }}/>
                    </View>,
                   ],
                   [<View style={styles.cellIcons}>
                         <Text
                            style={styles.textCells}>
                                 {item.nombre}</Text>
                         <Text
                            style={styles.textCellsDescription}> 
                                 {item.descripcion}</Text>
                         <Text
                            style= 
                  {styles.textCellsPrecio}>${item.precio.toLocaleString()} 
                          </Text>
              </View>,
                      ],
                      [<View>
                            <Text style={styles.cantidad1}>subtotal: 
                            <Text>$300000</Text></Text>
                            <View style={styles.buttonsAdd}>
                                <TouchableOpacity
                                 style={styles.button1}
                                 navigation={this.props.navigation}
                                 onPress={()=>{
                                     num = num-1;
                                     console.log(num)
                                      }}
                                >
                                                <Text>-</Text>
                                            </TouchableOpacity>
                                            <TextInput
                                                style={styles.textSum}
                                                value={this.state.numb.toString()}
                                                placeholder="0"
                                                underlineColorAndroid={"transparent"}
                                            />
                                            <TouchableOpacity
                                                style={styles.button2}
                                                navigation={this.props.navigation}
                                                onPress={(num) => {
                                                 num = num +1;
                                                   console.log(num)
                                                }
                                                }
                                            >
                                                <Text>+</Text>
                                            </TouchableOpacity>
                                          </View>
                                        <Text style={styles.cantidad}>cantidad</Text>
                                    </View>,]
                                ];

                                return (
                                    <View style={{flex: 1}} key={item.id}>
                                        <Table style={styles.table} borderStyle={{borderWidth: 2, borderColor: 'white'}}
                                               key={item.id}>
                                               <Cols data={tableData} flexArr={[1, 2, 2]} style={styles.cells}
                                               key={item.id}/>
                                        </Table>
                                    </View>
                                );
                            }}
                        />
                    </List>
                </View>

2 个答案:

答案 0 :(得分:1)

为tableData创建一个单独的组件。并使用

shouldComponentUpdate() 

在tableData组件内部,仅呈现所需的组件。 有关生命周期https://reactjs.org/docs/react-component.html

的文章很好读
shouldComponentUpdate() 

您可以从这里阅读

https://reactjs.org/docs/react-component.html#shouldcomponentupdate

答案 1 :(得分:0)

使用react-native-numeric-input

解决了什么