我正在创建晚餐决定者应用程序,并希望从用户输入中将项目添加到数组中。输入已添加到数组列表中,并显示在警报框中,但不会重新显示FlatList。请帮忙 这是我的相同代码。
constructor(props){
super(props);
this.state = {items:[{key:'Pasta'},{key:'Pizza'}],userdata:''}
}
render() {
return (
<Container>
<Header></Header>
<Content style={{padding:20}}>
<Text style={{fontSize: 30, textAlign:'center', marginVertical:30,}}>Food Decider</Text>
<Item floatingLabel>
<Label>Add Item</Label>
<Input
onChangeText={(text) => this.setState({userdata:text})}
/>
</Item>
<Button block success style={{marginTop: 20,}}
onPress={this.onSubmit.bind(this)}
>
<Text>Add Item</Text>
</Button>
<FlatList
data = {this.state.items}
renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
/>
</Content>
</Container>
);
}
onSubmit(){
this.state.items.push({key:this.state.userdata});
alert(JSON.stringify(this.state.items));
}
谢谢。
答案 0 :(得分:0)
首先在onSubmit函数中,您没有设置状态,只是按下一个值
onSubmit(){
this.state.items.push({key:this.state.userdata});
alert(JSON.stringify(this.state.items));
}
应该是这样的
onSubmit(){
let newState = this.state.items;
newState.push({key:this.state.userdata});
this.setState({items:newState});
alert(JSON.stringify(this.state.items));
}
并在这样的构造函数中绑定onSubmit函数
constructor(props){
super(props);
this.state = {items:[{key:'Pasta'},{key:'Pizza'}],userdata:''}
this.onSubmit = this.onSubmit.bind(this);
}
答案 1 :(得分:0)
您需要在FlatList中使用prop legacyImplementation = true,以便实时更改FlatList。
使用:
<FlatList legacyImplementation=true />
答案 2 :(得分:0)
在“平面”列表中,还有一个选项
"extraData={this.state.metaData}"
您可以使用它在操作完成后重置/重新加载FlatList,您可以这样使用:
constructor(props){
super(props);
this.state={
metaData:false,
}
}
<FlatList
data = {this.state.items}
renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
extraData={this.state.metaData}
/>
点击按钮后即可使用
onSubmit(){
let {metaTAbBarData}=this.state
this.state.items.push({key:this.state.userdata});
this.setState({metaData:!metaData})
}
当您单击提交按钮时,它将重新加载 它会帮助你,它会帮助我
答案 3 :(得分:0)
{ __typename, ...rest }