【问题标题】:Conditional function in react反应中的条件函数
【发布时间】:2021-01-30 14:02:04
【问题描述】:

只是想有条件地在 react 中添加一个函数,我在 JS 中完全搞定了,但是 react 有点不同,

我的媒体查询在这里

let query = window.matchMedia("(max-width: 768px)")

所以我想做的只是在媒体匹配时才允许 onClick 运行

<div onClick={handleClick}>

干杯

【问题讨论】:

  • 那么检查一下handleClick?

标签: javascript reactjs media-queries media


【解决方案1】:

由于用户可以随时调整其窗口大小,因此请在点击处理程序中运行检查:

const handleClick = () => {
  if (!window.matchMedia("(max-width: 768px)").matches) {
    return;
  }
  // rest of the code
};

【讨论】:

  • 谢谢我得到这个: const handleClick = () => { const query = window.matchMedia("(min-width: 768px)") if (!query) setIsFlipped(!isFlipped); } 在里面添加钩子,但是当它达到大小时它不起作用,函数甚至根本不运行
  • 您说您只想在匹配时运行处理程序。但是if (!query) 只有在它匹配时才会运行。反转你的测试? if (query) {
  • 是的,但它不会在媒体查询上运行,这很奇怪,它运行不管窗口的大小不知道发生了什么,它在 console.log 上响应所以没有错有语法
  • 您需要检查结果的.matches 属性以获取布尔值,否则它将始终为真(MediaQueryList 结果对象)
  • 啊,我明白了!这么想可以贴一下应该怎么写的语法,谢谢
猜你喜欢
  • 2021-09-29
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2022-11-05
  • 2022-12-10
  • 2016-11-16
  • 2017-06-24
相关资源
最近更新 更多