javascript - 显示每次在渲染时更新 onPress 的数组 - React Native

标签 javascript reactjs react-native

我有 2 个类,在一个类中,按下 TouchableOpacity 后,我将一些 id 添加到数组中。

第一类 - (AddToCard)

<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)第一个问题是:

this.state.selectedMembers.push(id)

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

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

构建新数组并将其存储在 newArray 变量中。 然后通过 setState 改变你的状态。

2)当我理解你的意思时,你只想显示新添加的 ID,对吗?

您可以分离这些数据并提供您已经获得的 id 作为属性 members={[/* 成员(member) ID*/]}

然后渲染所有内容:

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>
    );
}

关于javascript - 显示每次在渲染时更新 onPress 的数组 - React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798246/

相关文章:

reactjs - React、onClick 仅在第二次单击后才起作用、Axios、Async/Await

使用 React Router 路由到另一个组件时 CSS 没有改变

react-native - Jest Redux 持久化 : TypeError: Cannot read property 'catch' of undefined at writeStagedState

javascript - 以任何顺序匹配查询中所有单词的正则表达式

javascript - 你如何掌控一个复杂的 JavaScript 项目?

javascript - 使用 Javascript 构建动态 JSON 结构

javascript - 如何确保一次仅打开/展开 1 个面板?

javascript - 在 react 可观察中使用史诗的一个输出作为史诗的另一个输入

react-native - react native redux fbsdk 登录

javascript - Bootstrap 轮播不滑动