【发布时间】:2020-03-22 14:50:15
【问题描述】:
我有一个带有复选框的Card 组件。当用户点击一张卡片时,另一个Suggest 组件会打开。然而,当用户点击复选框时,onClick 函数也会运行,仍然会打开Suggestions 组件。如果没有建议,则返回,在这种情况下,复选框可以正常工作。我尝试使用preventDefault 和stopPropagation,我在下面的代码中包含了stopPropagation。非常感谢任何帮助。
import React, { useState } from "react";
const onUpdateCB = (e,ischecked, loginuser, userid, setisChecked,handleCheck) => {
e.stopPropagation();
console.log(ischecked, loginuser, userid);
fetch('http://localhost:3000/cb', {
method: 'post',
headers: {'Content-Type':'application/json'},
body:JSON.stringify({
loginuser,
userid,
ischecked: ischecked
})
}).then(setisChecked(ischecked));
return
};
const Card = props => {
const [isChecked, setisChecked] = useState(props.ischecked);
return (
<div
className="pointer bg-light-green dib br3 pa3 ma2 shadow-5"
onClick={() => props.handleClick(props.id)}
>
<div>
<h3>{props.name}</h3>
<p>{props.company}</p>
<p>{props.phone}</p>
<p>{props.email}</p>
<p>{props.city}</p>
</div>
<div>
My Network
<input
className="largeCheckbox"
type="checkbox"
checked={isChecked}
onChange={(e) =>
onUpdateCB(e,!isChecked, props.loginuser.id, props.id, setisChecked)
}
/>
</div>
</div>
);
};
手柄点击功能
handleClick(id) {
const updatedSuggest = suggest.map(sugg => {
if (sugg.id === id) {
this.setState({
suggest: suggest.filter(suggest => suggest.id === id),
route: "suggestions"
});
this.setState({ routed: true });
this.setState({
networkfilter: this.state.network.filter(netw => netw.id === id),
route: "suggestions"
});
this.setState({ routed: true });
}
return;
});
}
【问题讨论】:
-
看看能不能用
event.target !== event.currentTarget签入onClick函数 -
Ganesh-Thx。你能发布如何添加它吗?顺便说一句,我在 onClick 中添加了 stopPropagation,就像我在 onChange 中一样,我能够选中这些框,但是当我点击卡片时没有任何反应......
标签: reactjs checkbox preventdefault stoppropagation