为什么在将简单字符串传递给 state 时得到 'implied eval. Consider passing a function instead of a string'?

Why do I get 'implied eval. Consider passing a function instead of a string' when passing a simple string to state?

我只是在制作一个非常简单的计算器并设置 return 文本,以便它在屏幕上为用户打印。 这真的很简单,我已经多次将字符串传递给状态堆。 为什么会出现此错误?

这是相关的代码块:(请参阅与错误消息对齐的行号注释

    crcl = (((140 - age) * idbw) / (0.814 * creatinine)) * cockcroftFactor
    crclRounded = Math.round(crcl)
    setCreatinineClearance(crclRounded);
    if (crcl < 20 && weight >= 40 && weight <= 110) {
      setInterval("48-hourly, take trough level before the first dose");
    } else if (crcl >= 20 && crcl <= 60 && weight >= 40 && weight <= 110) {
      setInterval("24-hourly, take trough level before the third dose"); //this is line 131
    } else if (crcl >= 60 && weight >= 40 && weight <= 110) {
      setInterval("12-hourly, take trough level before the fourth dose"); //this is line 133
    }
    if (weight < 40) { //this is line 135
            alert("Please contact infectious diseases for dosing in underweight patients");
            closeDialog();
            return;
        } else if ((weight >= 40) && (weight <= 49)) {
            setDose("750")
        } else if ((weight >= 50) && (weight <= 64)) {
            setDose("1000")
        } etc.....

错误信息如下:

编辑:是的,根据@Etheryte 的评论,我意识到您打算 setInterval 成为 setState 函数名称。我完全错过了。由于 setInterval 是一个已经存在的函数的名称,我猜你只需要为你的 setState 函数使用不同的名称。


您可以将函数而不是字符串传递给 setInterval,以使浏览器(或 nodejs)以您作为第二个参数传递的给定时间间隔执行传递的函数。你两个都没有通过。

我假设它说“隐含评估”的原因是你传递了一个字符串,并认为你希望它将字符串解析为 javascript 并将其评估为 js,这是不安全的,它拒绝这样做。

下面是使用setInterval的例子。

setInterval(() => {
  console.log("Hello!")
}, 1000)