Javascript React native将值从渲染数组插入到新数组

Javascript React native将值从渲染数组插入到新数组,javascript,arrays,reactjs,react-native,Javascript,Arrays,Reactjs,React Native,我试图做的是从我已经渲染的旧数组中插入一个值到新数组中 目前,它可以完美地呈现我想要的数据,但当我将其推入新数组时,它会变成[id:undefined] 如何调用我从ListView渲染的ticketId以保存到myState数组中 class SeactionSeating extends React.Component { state = { ticket: [], myState: [] }; componentWillMount() {

我试图做的是从我已经渲染的旧数组中插入一个值到新数组中

目前,它可以完美地呈现我想要的数据,但当我将其推入新数组时,它会变成[id:undefined]

如何调用我从ListView渲染的ticketId以保存到myState数组中

 class SeactionSeating extends React.Component {

       state = { ticket: [], myState: [] };

       componentWillMount() {
         const tempticket = [];
          let i;
          let k = 1;
          let x;
          for (i = 1; i <= 50; i++) {
              k++;
              if (i < 10) {
                x = 'north';
              } else if (i < 20) {
                x = 'south';
              } else if (i < 30) {
                x = 'west';
              } else if (i < 40) {
                x = 'east';
              }
             tempticket.push({ ticketId: i, row: k, gate: x });
          }
          this.setState({ ticket: tempticket });
          this.setState({ myState: [] });
          //i deliberately leave mystate empty so that i can push new array later
       }
     render() {
     const ticketTemp = () => {
       this.state.myState.push({ id: ticketId });
       console.log(this.state.myState);
     };
    return (
      <Container>
        <View style={styles.listViewTitlePanel}>
           <Text> hello there</Text>
        </View>
          <Content>
            <ScrollView>
            <List>
              { this.state.ticket.map((item, i) => (
                <ListItem
                roundAvatar
                key={i}
                avatar={
                  <View >
                    <Text>{item.ticketId}</Text>
                  </View>
                }
                  title={
                    <View>
                      <Text>ROW :{item.row}</Text>
                    </View>
                  }
                  subtitle={
                    <View>
                      <Text>GATE :{item.gate}</Text>
                    </View>
                  }
                   //call ticketTemp
                   onPress={ticketTemp}
                />
              ))
              }
              </List>
            </ScrollView>
          </Content>
      </Container>
    );
  }
  }
class seaction.Component{
state={ticket:[],myState:[]};
组件willmount(){
const-tenticket=[];
让我;
设k=1;
设x;
对于(i=1;i{
this.state.myState.push({id:ticketId});
console.log(this.state.myState);
};
返回(
你好
{this.state.ticket.map((项目,i)=>(
))
}
);
}
}

您应该将
trackId
传递给您的
ticketTemp
函数,它可以将此值推送到
myState
数组中。我刚刚这样做了。我将
ticketTemp
函数转移到
render
函数的外部,因为修改状态的函数不能在
render内部ode>。
您的代码必须如下所示:

class SeactionSeating extends React.Component {
  state = { ticket: [], myState: [] };

  componentWillMount() {
    const tempticket = [];
    let i;
    let k = 1;
    let x;
    for (i = 1; i <= 50; i++) {
      k++;
      if (i < 10) {
        x = 'north';        
      } else if (i < 20) {
        x = 'south';
      } else if (i < 30) {
        x = 'west';        
      } else if (i < 40) {       
        x = 'east';
      }                          
        tempticket.push({ ticketId: i, row: k, gate: x });
      }
      this.setState({ ticket: tempticket });    
      // this.setState({ myState: [] }); //this line must be removed
      //i deliberately leave mystate empty so that i can push new array later
    }

    ticketTemp(ticketId) {
      this.state.myState.push({ id: ticketId });
      console.log(this.state.myState);
    };

    render() {

    return (
      <Container>
        <View style={styles.listViewTitlePanel}>
           <Text> hello there</Text>
        </View>
          <Content>
            <ScrollView>
            <List>
              { this.state.ticket.map((item, i) => (
                <ListItem
                roundAvatar
                key={i}
                avatar={
                  <View >
                    <Text>{item.ticketId}</Text>
                  </View>
                }
                  title={
                    <View>
                      <Text>ROW :{item.row}</Text>
                    </View>
                  }
                  subtitle={
                    <View>
                      <Text>GATE :{item.gate}</Text>
                    </View>
                  }
                   //call ticketTemp
                  onPress={() => this.ticketTemp(item.ticketId)}
                />
              ))
              }
              </List>
            </ScrollView>
          </Content>
      </Container>
    );
  }
}
class seaction.Component{
state={ticket:[],myState:[]};
组件willmount(){
const-tenticket=[];
让我;
设k=1;
设x;
对于(i=1;i(
this.ticketTemp(item.ticketId)}
/>
))
}
);
}
}

我做了一些更改,现在我运行时没有错误,谢谢您

您可以更改ticketTemp方法并将ticketID作为参数传递。然后更改ON按钮并使用TICKTID调用TICKETEMP

    class SeactionSeating extends React.Component {

       state = { ticket: [], myState: [] };

       componentWillMount() {
         const tempticket = [];
          let i;
          let k = 1;
          let x;
          for (i = 1; i <= 50; i++) {
              k++;
              if (i < 10) {
                x = 'north';
              } else if (i < 20) {
                x = 'south';
              } else if (i < 30) {
                x = 'west';
              } else if (i < 40) {
                x = 'east';
              }
             tempticket.push({ ticketId: i, row: k, gate: x });
          }
          this.setState({ ticket: tempticket });
          this.setState({ myState: [] });
          //i deliberately leave mystate empty so that i can push new array later
       }
     render() {
     const ticketTemp = (ticketId) => {
       this.state.myState.push({ id: ticketId });
       console.log(this.state.myState);
     };
    return (
      <Container>
        <View style={styles.listViewTitlePanel}>
           <Text> hello there</Text>
        </View>
          <Content>
            <ScrollView>
            <List>
              { this.state.ticket.map((item, i) => (
                <ListItem
                roundAvatar
                key={i}
                avatar={
                  <View >
                    <Text>{item.ticketId}</Text>
                  </View>
                }
                  title={
                    <View>
                      <Text>ROW :{item.row}</Text>
                    </View>
                  }
                  subtitle={
                    <View>
                      <Text>GATE :{item.gate}</Text>
                    </View>
                  }
                   //call ticketTemp
                   onPress={() => this.ticketTemp(item.ticketId)}
                />
              ))
              }
              </List>
            </ScrollView>
          </Content>
      </Container>
    );
  }
  }
class seaction.Component{
state={ticket:[],myState:[]};
组件willmount(){
const-tenticket=[];
让我;
设k=1;
设x;
对于(i=1;i{
this.state.myState.push({id:ticketId});
console.log(this.state.myState);
};
返回(
你好
{this.state.ticket.map((项目,i)=>(
this.ticketTemp(item.ticketId)}
/>
))
}
);
}
}

您是否在
ticketTemp
方法中选中了
ticketId
是否有值?@JigarShah是的,我已检查它在itAdd中是否有值关于传递参数的说明,以便use@VahidBoreiri我在ticketTemp函数中遇到了新的错误,您将其放在render之外,但在表示ticketId不是defi时遇到了问题nedI修正了我的答案。我现在得到了..谢谢,…然后我可以将ticketTemp作为render之外的函数