Javascript 防止onClick在加载时被触发。I';m在React项目中使用功能组件
这是将引用传递给购物车组件的父组件Javascript 防止onClick在加载时被触发。I';m在React项目中使用功能组件,javascript,reactjs,react-functional-component,Javascript,Reactjs,React Functional Component,这是将引用传递给购物车组件的父组件 函数头(){ const cartRef=useRef(); 常量handleClick=()=>{ cartRef.current.style.boxShadow=“0 0 100vw rgb(0,0,0,0.9)” } 返回( {handleClick()}}/> ); } 导出默认标题; 子组件将引用分配给如下所示的div function Cart(props) { return (<>
函数头(){
const cartRef=useRef();
常量handleClick=()=>{
cartRef.current.style.boxShadow=“0 0 100vw rgb(0,0,0,0.9)”
}
返回(
{handleClick()}}/>
);
}
导出默认标题;
子组件将引用分配给如下所示的div
function Cart(props) {
return (<>
<div ref={props.cRef}>
...
</div>
</>
);
}
export default Cart;
功能车(道具){
返回(
...
);
}
导出默认购物车;
像这样传递引用会导致这样的问题吗?像这样尝试:
我认为,handleClick
启动是因为它以错误的方式传递。handleClick()实际上没有被启动。所发生的是,导入到Header组件的Cart组件将与任何组件放置在return语句中时一样可见
function Header() {
const cartRef = useRef();
const handleClick = () =>{
cartRef.current.style.visibility = "visible";
cartRef.current.style.boxShadow = "0 0 0 100vw rgb(0, 0, 0, 0.9)"
}
return (
<>
<Cart cRef={cartRef} onClick={()=>{handleClick()}}/>
</>
);
}
export default Header;
函数头(){
const cartRef=useRef();
常量handleClick=()=>{
cartRef.current.style.visibility=“可见”;
cartRef.current.style.boxShadow=“0 0 100vw rgb(0,0,0,0.9)”
}
返回(
{handleClick()}}/>
);
}
导出默认标题;
我们可以将购物车组件的可见性设置为“隐藏”,然后在handleClick()事件处理程序上,再次将其设置为“可见”。是的,它应该可以工作。我们需要更多的代码来查看发生了什么。请您现在检查一下。我在
Cart
中添加了更多的code context.Console.logprops.cRef
。current
有哪些值?它有购物车组件。问题不在于它不起作用。一切正常,只是第一次被解雇,我不知道为什么。我才意识到发生了什么。我发现事件处理程序是完全忘记渲染过程的罪魁祸首。请核对我的答案。
function Header() {
const cartRef = useRef();
const handleClick = () =>{
cartRef.current.style.visibility = "visible";
cartRef.current.style.boxShadow = "0 0 0 100vw rgb(0, 0, 0, 0.9)"
}
return (
<>
<Cart cRef={cartRef} onClick={()=>{handleClick()}}/>
</>
);
}
export default Header;