Javascript 试图将变量传递到函数外部
我想将索引变量从映射传递到事件更改函数。 代码如下:Javascript 试图将变量传递到函数外部,javascript,reactjs,react-router,jsx,Javascript,Reactjs,React Router,Jsx,我想将索引变量从映射传递到事件更改函数。 代码如下: {this.data && this.data.map((item, index) => ( <tr className="table-info" key={index}> <td>{index}</td> <td>{item.namaPengirim}</td> <td>{item
{this.data &&
this.data.map((item, index) => (
<tr className="table-info" key={index}>
<td>{index}</td>
<td>{item.namaPengirim}</td>
<td>{item.namaPenerima}</td>
<td>{item.jenisPengiriman}</td>
<td>{item.berat}</td>
<td>{item.volume}</td>
<td>{item.Harga}</td>
<td>
<select
onChange={(key, event) => {
this.props.onProsesChange(key, event, index);
}}
value={this.props.proses}
className="form-control"
>
<option></option>
<option value="Delivered">Delivered </option>
<option value="On Process">On Process</option>
</select>
</td>
</tr>
))}
问题
函数签名与调用它的方式不匹配
onProsesChange(event, index) {
let data = JSON.parse(localStorage.getItem("proses"));
console.log(data);
console.log(this.state.proses);
console.log(index);
if (data && data[index]) {
data[index] = event.target.value;
this.setState({ ...this.state, proses: data });
localStorage.setItem("proses", JSON.stringify(data));
} else {
data[index] = event.target.value;
this.setState({ ...this.state, proses: [event.target.value] });
localStorage.setItem("proses", JSON.stringify([data]));
}
}
...
onChange={(key, event) => {
this.props.onProsesChange(key, event, index);
}}
调用时传递键
,事件
对象,最后传递索引
解决方案1
同时使用键
onProsesChange(key, event, index) {
let data = JSON.parse(localStorage.getItem("proses"));
console.log(data);
console.log(this.state.proses);
console.log(index);
if (data && data[index]) {
data[index] = event.target.value;
this.setState({ ...this.state, proses: data });
localStorage.setItem("proses", JSON.stringify(data));
} else {
data[index] = event.target.value;
this.setState({ ...this.state, proses: [event.target.value] });
localStorage.setItem("proses", JSON.stringify([data]));
}
}
onChange={(key, event) => {
this.props.onProsesChange(event, index);
}}
解决方案#2
通过不传递键来匹配签名
onProsesChange(key, event, index) {
let data = JSON.parse(localStorage.getItem("proses"));
console.log(data);
console.log(this.state.proses);
console.log(index);
if (data && data[index]) {
data[index] = event.target.value;
this.setState({ ...this.state, proses: data });
localStorage.setItem("proses", JSON.stringify(data));
} else {
data[index] = event.target.value;
this.setState({ ...this.state, proses: [event.target.value] });
localStorage.setItem("proses", JSON.stringify([data]));
}
}
onChange={(key, event) => {
this.props.onProsesChange(event, index);
}}
范围仅深入/内部而非外部。如果你想要外部的东西,在外部声明一个变量,在内部赋值。这是什么意思?抱歉,我不太明白索引
在(整个array.map回调的)范围内,所以这里看起来没问题。你能在问题中加入onprosechange
吗?你的控制台日志记录在哪里?什么是onprosechange
?我在帖子中添加了onprosechange。