Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将参数传递给map()函数中的事件处理程序?_Reactjs - Fatal编程技术网

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我的最后一条评论-现在一切正常,谢谢