问题描述
我正在尝试将一个备用的布尔参数传递给 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