Javascript React native将值从渲染数组插入到新数组
我试图做的是从我已经渲染的旧数组中插入一个值到新数组中 目前,它可以完美地呈现我想要的数据,但当我将其推入新数组时,它会变成[id:undefined] 如何调用我从ListView渲染的ticketId以保存到myState数组中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() {
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之外的函数