代码之家  ›  专栏  ›  技术社区  ›  CraZyDroiD

显示每次在render-reactnative中按时更新的数组

  •  0
  • CraZyDroiD  · 技术社区  · 7 年前

    我有两节课,在一节课上按 TouchableOpacity 我在数组中添加一些id。

    一级-(地址卡)

    <TouchableOpacity style={styles.addtogroupcard} onPress={() => addToArray(reviewer.id)}>
      <Icon name="ios-add-circle-outline" style={styles.friendaddicon}/>
    </TouchableOpacity>
    

    第二类

    class AddMem extends Component {
    
        constructor(props) {
            super(props);
            this.state = {
    
                selectedMembers: []
    
            }
        }
    
    
        addToArray(id) {
    
            this.state.selectedMembers.push(id)
            console.log("selectedMembers", this.state.selectedMembers);
    
        }
    
        render() {
    
             return (
    
                <View style={{flex: 1, backgroundColor: 'whitesmoke', padding: 10}}>
    
                      <AddToCard reviewer={reviewer} key={reviewer.id} addToArray={this.addToArray.bind(this)}/>
                 ////this is where i want to display my array data
    
    
    
                </View>
            );
        }
    }
    

    如何可以显示这些数组数据,而不必再次更新数组,而只显示添加到数组中的新数据。

    我的方法是这样的,但它不起作用。

    {this.state.selectedMembers.map(selectedMember => selectedMember)}
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   christian wuensche    7 年前

    1)第一个问题是:

    this.state.selectedMembers.push(id)

    不要直接改变状态。 用途:

    const newArray = [ ...this.state.selectedMembers, id ];
    this.setState({ selectedMembers: newArray });
    

    构建新数组并将其存储在new array变量中。 然后通过 setState .

    2)当我明白你说得对时,你只想显示新添加的ID,对吧?

    你可以把这些数据分开,把你已经拿到的身份证给我 members={[ /* member ids*/ ]}

    然后渲染所有内容:

    render() {
    
         return (
    
            <View style={{flex: 1, backgroundColor: 'whitesmoke', padding: 10}}>
    
                  <AddToCard reviewer={reviewer} key={reviewer.id} addToArray={this.addToArray.bind(this)}/>
                  {
                      this.props.members.map(id => (
                          <Text key={id}>{id}</Text>
                      ))
                  }
                  {
                      this.state.selectedMembers.map(id => (
                          <Text key={id}>{id}</Text>
                      ))
                  }
    
    
    
            </View>
        );
    }