Javascript 单击按钮时,React Native会添加新数据
我是个新手,不熟悉本地语言,也不熟悉javascript。我的代码有一个问题,我似乎无法找到错误所在 我的应用程序有一个用户可以添加和保存车牌号。问题是每次我保存盘子,或者单击“添加”按钮,或者只是简单地单击已经保存的盘子,它都会复制自己 这是我的代码Javascript 单击按钮时,React Native会添加新数据,javascript,react-native,Javascript,React Native,我是个新手,不熟悉本地语言,也不熟悉javascript。我的代码有一个问题,我似乎无法找到错误所在 我的应用程序有一个用户可以添加和保存车牌号。问题是每次我保存盘子,或者单击“添加”按钮,或者只是简单地单击已经保存的盘子,它都会复制自己 这是我的代码 export default class plakaco extends Component { constructor(){ super() this.state = { plat
export default class plakaco extends Component {
constructor(){
super()
this.state = {
plates: [
{plateNumber: '', status: '', id: 1},
]
}
this.getPlateId = this.getPlateId.bind(this);
}
componentWillReceiveProps(nextProps) {
let newArr = this.state.plates.slice(0);
let idPlate = this.state.plates[this.state.plates.length - 1];
let newId = idPlate.id + 1
newArr.push({plateNumber: nextProps.pn, status: 'Saved', id: newId})
this.setState({
plates: newArr
})
}
componentDidMount() {
AsyncStorage.getItem("id").then(val => {
this.setState({
"id": val
})
fetch(`http://aaa.com/api/getClientPlates/${val}`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({})
}).then(response => {
response.json().then(data => {
console.log(data)
})
})
}).done()
}
getPlateId(i, plateNumber, inputEditable){
this.props.getValues(plateNumber, inputEditable, false, false);
}
addAPlate(){
this.props.getValues('', true, true, true);
}
render() {
return (
<View style={styles.leftView}>
<Button
onPress={this.addAPlate.bind(this)}
title="ADD"
color="#343434"
accessibilityLabel="Add a plate."
/>
<PlateItems plates={this.state.plates} getPlateId={this.getPlateId}/>
</View>
);
}
}
const styles = StyleSheet.create({
leftView: {
flex: 1,
backgroundColor: '#F1F1F1'
}
});
导出默认类plakaco扩展组件{
构造函数(){
超级()
此.state={
车牌:[
{plateNumber:'',状态:'',id:1},
]
}
this.getPlateId=this.getPlateId.bind(this);
}
组件将接收道具(下一步){
设newArr=this.state.plates.slice(0);
让idPlate=this.state.plates[this.state.plates.length-1];
设newId=idPlate.id+1
newArr.push({plateNumber:nextrops.pn,状态:'Saved',id:newId})
这是我的国家({
车牌:纽瓦尔
})
}
componentDidMount(){
AsyncStorage.getItem(“id”)。然后(val=>{
这是我的国家({
“id”:val
})
取回(`http://aaa.com/api/getClientPlates/${val}`{
方法:“POST”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify({})
})。然后(响应=>{
response.json().then(数据=>{
console.log(数据)
})
})
}).完成
}
getPlateId(i,plateNumber,可输入){
this.props.getValues(plateNumber、可输入、false、false);
}
addAPlate(){
this.props.getValues(“”,true,true,true);
}
render(){
返回(
);
}
}
const styles=StyleSheet.create({
左视图:{
弹性:1,
背景颜色:“#f1f1”
}
});
这是我点击一个盘子的代码,它一次又一次地添加同一个盘子
_onPress(i){
this.props.plates.filter((val) => {
if(val.id === i){
this.props.getPlateId(i, val.plateNumber, false, false);
}
});
}
render() {
const listItems = this.props.plates.map((item) =>
<TouchableOpacity onPress={this._onPress.bind(this, item.id)} key={item.id}>
<View style={styles.lists} >
<Text style={styles.itemText1}>{item.plateNumber}</Text>
<Text style={styles.itemText2}>{item.status}</Text>
</View>
</TouchableOpacity>
);
\u onPress(一){
此.props.plates.filter((val)=>{
如果(val.id==i){
this.props.getPlateId(i,val.plateNumber,false,false);
}
});
}
render(){
const listItems=this.props.plates.map((项目)=>
{项目编号}
{item.status}
);
非常感谢!在理解了代码之后,我想出了一个解决方案,该解决方案中的错误可能在
组件将接收props
中,请更改
this.state.plates[this.state.plates.length - 1];
to
newArr[newArr.length - 1];
干杯:)还是一样,先生。当我点击一个现有的盘子时,它会复制。当你的物品.id是唯一的,那么就不需要使用过滤器。使用indexOfwhat?@Codesingh