Reactjs 如何将参数传递给map()函数中的事件处理程序?
选中或取消选中复选框时,以下例程调用事件处理程序:Reactjs 如何将参数传递给map()函数中的事件处理程序?,reactjs,Reactjs,选中或取消选中复选框时,以下例程调用事件处理程序: {deliveries.map((x) => ( <tr> <td className="dataTableCell"> <input type="checkbox" onChange={(x) => { this.setSelectedDelivery(
{deliveries.map((x) => (
<tr>
<td className="dataTableCell">
<input type="checkbox"
onChange={(x) => {
this.setSelectedDelivery({x.DeliveryId})
}} />
</td>
<tr>
))}
{deliveries.map((x)=>(
{
this.setSelectedDelivery({x.DeliveryId})
}} />
))}
我尝试将x.DeliveryId参数作为x.DeliveryId和{x.DeliveryId}传递,但这两种方法都不起作用。为了成功地将x.DeliveryId值作为参数传递给事件处理程序,我需要如何构造此代码?我猜当您执行以下操作时:
onChange={(x) => { this.setSelectedDelivery({x.DeliveryId}) }}
onChange方法的事件覆盖了x
值,这就是x.DeliveryId
失败的原因,因为事件(在本例中为x
)没有DeliveryId
属性
解决此问题的一种方法是在onChange
方法中添加两个参数,一个用于事件,另一个用于您要传递的变量。这是在使用事件的任何属性的情况下:
onChange={(event, x) => { this.setSelectedDelivery(x.DeliveryId) }}
I您没有在事件上使用任何属性
只是不要将任何参数传递给onChange
方法:
onChange={() => { this.setSelectedDelivery(x.DeliveryId) }}
编辑:
我不确定setSelectedDelivery
是如何生成的,但我可以看到您传递的对象没有值
,但我假设您只需要id
,这就是为什么您在注释中看到您提到的错误,因此,您必须只将x.DeliveryId
传递给您的setSelectedDelivery
它应该是onChange={()=>this.setSelectedDelivery({x.DeliveryId}}}}
我尝试过,但VS code在该设置中返回以下语法错误:解析错误:意外标记,预期“,”您使用的是哪一个示例?为什么选择它?@user12617173我编辑了答案请查看这里有一个有趣的信息。如果我在回答中使用该方法并在事件处理程序函数中对值发出警报,那么警报将显示“未定义”。但是,如果我只是将“x”传递给事件处理程序(与x.DeliveryId相反),然后从事件处理程序函数发出警报x.DeliveryId,那么预期的传递id将显示在警报中。知道是什么导致了这种行为吗?nvm我的最后一条评论-现在一切正常,谢谢