微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将附加参数传递给 onChange 函数 React

如何解决将附加参数传递给 onChange 函数 React

我正在尝试将一个备用的布尔参数传递给 ReactJS 中的 onChange 处理程序。这个想法是,在一场足球比赛中,前端会在比赛事件发生时添加它们(在这种情况下是角球)。这个想法是布尔值 homeOrAway 将表示角球是判给主队还是客队。

这是 JSX 和钩子:

  const [homeCorners,setHomeCorners] = useState(0);

        <Form>
          <Form.Group controlId="homeCorners"></Form.Group>
          <Form.Label>Home Corners</Form.Label>
          <Form.Control
            type="number"
            id="homeCornersInput"
            name="homeCorners"
            step="1"
            value={homeCorners}
            min="0"
            max="50"
            style={{
              width: "82.5px",}}
            onChange={(e) => adjustCorners(true)}
          ></Form.Control>
        </Form>

这里是 adjustCorners 函数。我尝试了一个咖喱函数,但它似乎不起作用:

 function adjustCorners(homeOrAway) {
    let updatedMatchEvents = [...matchEvents];
    let cornerEvent = {
      isHome: homeOrAway,eventType: 1,playerId: 0,period: 1,minute: 0,second: 0,};

    return (event) => {
      if (homeOrAway === true) {
        if (event.target.value < homeCorners) {
          updatedMatchEvents.pop();
          setMatchEvents(updatedMatchEvents);
        } else {
          updatedMatchEvents.push(cornerEvent);
          setMatchEvents(updatedMatchEvents);
        }
      } else {
        if (event.target.value < awayCorners) {
          updatedMatchEvents.pop();
          setMatchEvents(updatedMatchEvents);
        } else {
          updatedMatchEvents.push(cornerEvent);
          setMatchEvents(updatedMatchEvents);
        }
      }
    };
  }

我也试过只使用基本的箭头函数,但它似乎也不起作用。我可以打印到控制台,但 Form 不会增加或减少:

const adjustCorners = (homeOrAway,corners) => {
    let updatedMatchEvents = [...matchEvents];
    let cornerEvent = {
      isHome: homeOrAway,};

    if (homeOrAway === true) {
      if (corners < homeCorners) {
        updatedMatchEvents.pop();
        setMatchEvents(updatedMatchEvents);
      } else {
        updatedMatchEvents.push(cornerEvent);
        setMatchEvents(updatedMatchEvents);
      }
    } else {
      if (corners < awayCorners) {
        updatedMatchEvents.pop();
        setMatchEvents(updatedMatchEvents);
      } else {
        updatedMatchEvents.push(cornerEvent);
        setMatchEvents(updatedMatchEvents);
      }
    }
  };

解决方法

根据您的逻辑,pcd = o3d.io.read_point_cloud('./mesh.xyz') pcd.estimate_normals() # to obtain a consistent normal orientation pcd.orient_normals_towards_camera_location(pcd.get_center()) pcd.normals = o3d.utility.Vector3dVector( - np.asarray(pcd.normals)) # surface reconstruction using Poisson reconstruction mesh,_ = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd,depth=9) o3d.io.write_triangle_mesh('mesh.stl',mesh) 返回一个函数,因此您需要向它传递一个值。

此外,由于 Synthetic events 在 React 中的工作方式,您应该传递实际值而不是事件对象。

adjustCorners

重写示例:

// Rewrite adjustCorners to use the value and not reference the event.
onChange={(e) => adjustCorners(true)(e.target.value)}

// BUG,DON'T DO IT,READ ABOUT SYNTHETIC EVENTS
onChange={(e) => adjustCorners(true)(e)} // !! BUG CAREFUL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。