Javascript “如何写作”;如果;我的循环中的条件获取语法错误并更新列表中的一行
我被困在这两者之间。我想循环检查道具索引和地图索引是否匹配,然后更改值 但是,如果我执行以下操作,它会抛出一个语法错误,指向Javascript “如何写作”;如果;我的循环中的条件获取语法错误并更新列表中的一行,javascript,reactjs,Javascript,Reactjs,我被困在这两者之间。我想循环检查道具索引和地图索引是否匹配,然后更改值 但是,如果我执行以下操作,它会抛出一个语法错误,指向如果请告诉我出了什么问题,这超出了范围 import React, {Component} from 'react'; update.js class UpdateItem extends Component{ constructor(props){ super(props); this.state={editedVal:''}; //this
如果请告诉我出了什么问题,这超出了范围
import React, {Component} from 'react';
update.js
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;
class UpdateItem扩展组件{
建造师(道具){
超级(道具);
this.state={editedVal:''};
//this.setState({editedVal:this.props.eVal});
this.handleSubmit=this.handleSubmit.bind(this);
this.handleChange=this.handleChange.bind(this);
}
手变(e)
{this.setState({
editedVal:e.target.value
});
//this.props.eVal=e.target.value;
}
handleSubmit(e){
e、 预防默认值();
警报(this.state.editedVal);
警报(this.props.eIndx);
this.props.list.map((item,i)=>{if(this.props.eIndx==i)
{alert(“s”)}其他{alert(“sd”)});
}
render(){
返回(
);
}
}
导出默认更新项;
addlist.js
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;
类AdList扩展组件{
建造师(道具){
超级(道具);
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)
{
警告(“编辑”);
}
delItemRow(项目名称)
{this.setState({disArrList:this.state.disArrList.filter(e1=>e1!==itemName)})
;
}
updateItemRow(itemName,itemId)
{
this.setState({editVal:itemName,editIndx:itemId});
警报(itemId+“============================”+itemName);
}
手变(e){
this.setState({value:e.target.value});
}
handleSubmit(e){
e、 预防默认值();
//警报(“提交”+此.state.value);
让myCollection=this.state.disArrList.concat(this.state.value);
this.setState({disArrList:myCollection});
}
render(){
返回(
);
}
}
导出默认广告列表;
如果
是语句,而不是表达式。如果要使用,则必须使用带括号的箭头函数
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';
});
使用.forEach
函数的Map
实例,.Map
函数以数组
的形式返回结果,.forEach
只是循环
例如:
this.props.list.forEach((item, i) => {
if (//your logic) {
// to do
} else {
//stuff
}
});
如果要在结果中获取数组
,请使用.map
,并且需要在每个循环中返回一些内容:
this.props.list.map((item, i) => {
if (//your logic) {
return // to do;
} else {
return //stuff;
}
});
如果只有一个条件,并且它也将返回数组,则还可以使用过滤器
this.props.list.filter((item, i) => this.props.eindex === i ? "do something" : "else dont")
使用拼接方法,效果很好
this.props.list.splice(checkIndex,1,this.state.editedVal) 注意:forEach更适合于检查,而不是映射,它应该返回一个修改过的项目exprsions@Hafsah什么。。。你的意思是?这是一个编辑功能逻辑,取决于索引m更新该行实际检查更新JS,然后我需要返回数组