【问题标题】:Greater than conditional in react not working大于有条件的反应不起作用
【发布时间】:2021-08-02 15:46:33
【问题描述】:

这里可能只是发生了一些非常愚蠢的事情,但由于某种原因,一个明显的条件在这里没有变成真的:

const [mouseDown, setmouseDown] = useState(false)
    const [isMouseDownSuccess, setisMouseDownSuccess] = useState(false)
    const delay = 1000;
    const [startPress, setstartPress] = useState(null)

    function handleMouseDown(){
        setstartPress(Date.now())
        setmouseDown(true)
        // console.log(startPress)
    }

    function handleMouseUp(){
        const diff = Date.now - startPress;
        //This if statement for some reason never becomes true.
        if(diff > delay){
            // setisMouseDownSuccess(!isMouseDownSuccess)
            console.log('Long Press')
        }
        // console.log(Date.now())
        setmouseDown(false)
        console.log("difference: " + (Date.now() - startPress)) 
        console.log("delay: " + delay)
        console.log(diff > delay) 
        //This clearly shows a numerical difference^^^....so the if statement should be true.
    }

【问题讨论】:

  • const diff = Date.now - startPress; 应该是const diff = Date.now() - startPress;
  • Date.now() - startPress。你想要这个吗?
  • 你在Date.now - startPress 中错过了()
  • 谢谢大家????
  • 如果答案解决了您的问题,请不要忘记将答案标记为已接受。

标签: reactjs conditional-statements


【解决方案1】:

难怪

diff > delay

永远不会成为真的。只需看看这两个变量将具有什么值。延迟设置为1000

当差异设置为

const diff = Date.now - startPress;

虽然startPress 使用Date.now() 正确计算,但此行忘记了使用() 调用Date.now 函数。 Date.now 被评估为 undefined,减去一些数字是 NaN 也不是数字。

所以diff 拥有NaN 的值,而NaN 令人惊讶地既不大于也不小于也不等于任何数字。

改成

const diff = Date.now() - startPress;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 2020-12-05
    • 2021-08-31
    • 2015-12-25
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多