【发布时间】:2021-09-26 00:28:54
【问题描述】:
我正在构建一个 ReactJS 应用程序,并且我有一个在单击后调用的函数,但是我希望仅当屏幕宽度大于 1200 像素时才触发此单击事件。
例如,在下面的代码中,我在subContainer 元素中添加了一个onClick 事件,如果屏幕宽度小于1200 像素,我想阻止这个onClick 被触发。
有没有办法在不使用监听器的情况下做到这一点?
我知道我可以使用侦听器并设置条件来确定是否侦听此事件;我也知道我可以在函数内设置条件并阻止执行逻辑;而且我还可以创建两个不同的 JSX 元素(一个没有事件)并根据我的条件渲染一个或另一个。但我想要的是保留元素上的onClick(没有addEventListener)并防止它被触发
应该是这样的:<div screenWidth > 1200 ? onClick="..." : null>Test</div>。当然,这是行不通的。
这可能吗?
附:请记住,我使用的是 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>
【问题讨论】:
-
可能类似于
onClick={window.screen.width > 1200 ? test() : () => console.log('Not true')}或在您的测试函数内部if(window.screen.width > 1200) do stuff -
是的,我能做到。但我想要的是防止事件被触发而不是改变将被调用的内容。
-
我认为这个答案:stackoverflow.com/a/68421971/10213537,可能是更好的解决方案,条件是
window.screen.width > 1200
标签: javascript reactjs events event-handling dom-events