首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在我的循环中写入"if“条件,获得语法错误并更新列表中的行

如何在我的循环中写入"if“条件,获得语法错误并更新列表中的行
EN

Stack Overflow用户
提问于 2018-08-20 01:32:52
回答 3查看 58关注 0票数 1

我被困在这里了。我想循环并检查属性索引和地图索引是否匹配,然后更改值

但是,如果我执行以下操作,它会抛出一个语法错误,指向if请让我知道出了什么问题

代码语言:javascript
复制
 import React, {Component} from 'react';

update.js

代码语言:javascript
复制
class UpdateItem extends Component{

constructor(props){
    super(props);
    this.state={editedVal:''};
    //this.setState({editedVal:this.props.eVal});
    this.handleSubmit=this.handleSubmit.bind(this);
    this.handleChange=this.handleChange.bind(this);
}
handleChange(e)
{this.setState({

    editedVal:e.target.value
    });
 //this.props.eVal=e.target.value;
  }
   handleSubmit(e){
    e.preventDefault();
    alert( this.state.editedVal);
    alert(this.props.eIndx);
   this.props.list.map((item,i)=>{if(this.props.eIndx===i) 
   {alert("s")}else{alert("sd")}});

}
render(){
    return(
       <div>
         <form onSubmit={this.handleSubmit}>
           <input type="text" value={this.state.editedVal?this.state.editedVal:this.props.eVal} onChange={this.handleChange}/>
           <input type="submit" value="update"/>
         </form>
       </div>
    );
}
}

 export default UpdateItem;

addlist.js

代码语言:javascript
复制
   class AdList extends Component{
   constructor(props){
  super(props);
  this.state={value:'',disArrList:[],editVal:'',editIndx:''}
  this.handleChange=this.handleChange.bind(this);
  this.handleSubmit=this.handleSubmit.bind(this);
  this.delItemRow=this.delItemRow.bind(this);
  this.updateItemRow=this.updateItemRow.bind(this);
  this.editItemValue=this.editItemValue.bind(this);

}

 editItemValue(e)
 {
    alert("edit");
 }

delItemRow(itemName)
{this.setState({disArrList:this.state.disArrList.filter(e1=>e1!==itemName)}) 
;

}

updateItemRow(itemName,itemId)
{
       this.setState({editVal:itemName,editIndx:itemId});
    alert(itemId +"==========="+itemName);
}


handleChange(e){
    this.setState({value:e.target.value});
}

handleSubmit(e){
    e.preventDefault();
    //alert("submit"+this.state.value);
    let mycolletion=this.state.disArrList.concat(this.state.value);
    this.setState({disArrList:mycolletion});
}


render(){
    return(
        <div>
            <div className="Todo">
                <form onSubmit={this.handleSubmit}>
                    <input type="text" value={this.state.value} onChange={this.handleChange}/>
                    <input type="submit" value="Add" />
                </form>
            </div>
            <div>
               <DisplayList  list={this.state.disArrList} removeItem={this.delItemRow} updateItem={this.updateItemRow}/>
            </div>
            <div>
                <UpdateItem list={this.state.disArrList} editItem={this.editItemValue} eVal={this.state.editVal} eIndx={this.state.editIndx}/>
            </div>

        </div>
        );
}
 } 

export default AdList;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-20 10:21:48

使用拼接方法像使用咒语一样工作

this.props.list.splice(checkIndex,1,this.state.editedVal);

票数 0
EN

Stack Overflow用户

发布于 2018-08-20 01:36:41

if是语句,而不是表达式。您必须使用带括号的箭头函数才能使用if

代码语言:javascript
复制
this.props.list.map((item, i) => {
  if (this.props.eIndx === i) {
    alert("s");
  } else {
    alert("sd");
  }
  // map should always return something,
  // or you'll end up with a list of `undefined`s.
  //Otherwise use `forEach`.
  return 'something';
});
票数 3
EN

Stack Overflow用户

发布于 2018-08-20 01:55:28

使用Map函数的.forEach实例,.map函数以array形式返回结果,而.forEach只是循环。

例如:

代码语言:javascript
复制
this.props.list.forEach((item, i) => {
  if (//your logic) {
    // to do 
  } else {
    //stuff
  }
});

如果您希望在结果中获取Array,请使用.map,并且需要在每个循环中返回一些内容:

代码语言:javascript
复制
this.props.list.map((item, i) => {
  if (//your logic) {
    return // to do;
  } else {
    return //stuff;
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51920179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档