有没有办法防止基于条件触发事件?
Is there a way to prevent an event to be triggered based on a condition?
我正在构建一个 ReactJS 应用程序,我有一个在点击后调用的函数,但是我希望仅当屏幕宽度大于 1200px 时才触发此点击事件。
例如,在下面的代码中,我将一个 onClick
事件添加到 subContainer
元素,我想防止此 onClick
在屏幕宽度小于 1200px。
有没有办法不使用侦听器来做到这一点?
我知道我可以使用侦听器并设置条件来确定是否会侦听此事件;我也知道我可以在函数内设置条件并阻止执行逻辑;我还可以创建两个不同的 JSX 元素(一个没有事件)并根据我的条件呈现一个或另一个。但我想要的是将 onClick
保留在元素上(没有 addEventListener
)并防止它被触发
应该是这样的:<div screenWidth > 1200 ? onClick="..." : null>Test</div>
。当然,这不行。
这可能吗?
P.S。请记住,我正在使用 React,此代码只是示例。
const test = () => {
console.log('Test')
}
.subContainer {
width: 100px;
height: 20px;
background-color: red;
color: white;
text-align: center;
cursor: pointer;
}
<div class="container">
<div class="subContainer" onClick="test()">Test<div>
</div>
也许是这样:
import "./styles.css";
export default function App() {
console.log(window.screen.width);
let myCondition = window.screen.width > 1200;
console.log(myCondition);
const clickThis = () => {
console.log("hello");
};
return (
<div className="App">
<button
onClick={ myCondition ? clickThis : null}
>
Hello CodeSandbox
</button>
</div>
);
}
此外,显然是 window.screen.width 而不是 window.screenWidth。
可以用hook监听window尺寸,在onClick
里面根据宽度传函数
function App() {
const size = useWindowSize();
return (
<div class="container">
<div class="subContainer" onClick={size.width > 1200 ? test : null}>
Test
</div>
</div>
);
}
这是一个link到简单的useWindow hook
根据 将属性设置为 false 会导致反应从 HTML 中省略它,这可能会导致事件不被调用,所以也许使用 onClick={window.screen.width > 1200 ? function() : false}
是最好的方法。
我正在构建一个 ReactJS 应用程序,我有一个在点击后调用的函数,但是我希望仅当屏幕宽度大于 1200px 时才触发此点击事件。
例如,在下面的代码中,我将一个 onClick
事件添加到 subContainer
元素,我想防止此 onClick
在屏幕宽度小于 1200px。
有没有办法不使用侦听器来做到这一点?
我知道我可以使用侦听器并设置条件来确定是否会侦听此事件;我也知道我可以在函数内设置条件并阻止执行逻辑;我还可以创建两个不同的 JSX 元素(一个没有事件)并根据我的条件呈现一个或另一个。但我想要的是将 onClick
保留在元素上(没有 addEventListener
)并防止它被触发
应该是这样的:<div screenWidth > 1200 ? onClick="..." : null>Test</div>
。当然,这不行。
这可能吗?
P.S。请记住,我正在使用 React,此代码只是示例。
const test = () => {
console.log('Test')
}
.subContainer {
width: 100px;
height: 20px;
background-color: red;
color: white;
text-align: center;
cursor: pointer;
}
<div class="container">
<div class="subContainer" onClick="test()">Test<div>
</div>
也许是这样:
import "./styles.css";
export default function App() {
console.log(window.screen.width);
let myCondition = window.screen.width > 1200;
console.log(myCondition);
const clickThis = () => {
console.log("hello");
};
return (
<div className="App">
<button
onClick={ myCondition ? clickThis : null}
>
Hello CodeSandbox
</button>
</div>
);
}
此外,显然是 window.screen.width 而不是 window.screenWidth。
可以用hook监听window尺寸,在onClick
里面根据宽度传函数function App() {
const size = useWindowSize();
return (
<div class="container">
<div class="subContainer" onClick={size.width > 1200 ? test : null}>
Test
</div>
</div>
);
}
这是一个link到简单的useWindow hook
根据 onClick={window.screen.width > 1200 ? function() : false}
是最好的方法。