【问题标题】:REACT - Switch case statement breaksREACT - Switch case 语句中断
【发布时间】:2020-07-27 21:28:31
【问题描述】:

我确定这很愚蠢,我几乎没有醒来,而且我的大脑似乎没有在正确的水平上运作。

我正在做反应,我正在尝试使这个 switch 语句工作,但它弹出以下错误:预期一个赋值或函数调用,而是看到一个表达式(第 30 行 - 我将突出显示线是)。我需要一个 iframe 弹出窗口,但它似乎不起作用。我尝试创建一个函数并改为调用该函数,仍然是同样的错误。

const HandleOnClick = example => {
    if (example ) {
      if (example.assets.length > 10) {
           //Not implemented yet
      } else {
        switch (example.assets[0].type) {
          case "link":
            window.open(example.assets[0].url);
            break;
          case "document":
             <iframe src={example.assets[0].url} title="title"> //THIS IS LINE 30 WHERE IT BREAKS
          </iframe>
            break;
          case "video":
            //Not implemented

            break;
          default:
            break;
        }
      }
    } else {
     ................

【问题讨论】:

  • 您希望该 HTML 做什么?被退回?分配给某个字符串?还有什么?
  • 我认为你错过了那里的 HTML 回报。
  • @takendarkk 因此,一旦我摆脱 iframe,switch 语句就会起作用,添加 iframe 会产生问题和错误。我只是想让 iFrame 显示组件的 OnClick。

标签: javascript reactjs


【解决方案1】:

尝试使用状态值来确定 iframe 是否显示:

          case "link":
            window.open(example.assets[0].url);
            break;
          case "document":
             this.setState({ iframeUrl: example.assets[0].url }) // whatever you want to call it
            break;
          case "video":
            //Not implemented

            break;
          default:
            break;
        }

然后在您的代码中:

{this.state.iframeUrl && (
  <iframe src={this.state.iframeUrl} title="title">
  </iframe>
)}

【讨论】:

  • 感谢您的建议。我不确定那会如何,让我详细说明一下。我在屏幕上映射了 20 个项目,其中包含调用此 switch-case 语句的 onClick 功能。基本上,我根据资产类型(链接、文档、图片)确定应该调用和打开什么。所以从字面上看,如果案例是“文档”,只需打开 iframe。
  • 虽然你拥有它的方式不起作用,但点击时你只是在折腾html。它不知道如何处理它。我将更新我的代码以使其更具动态性,但您必须考虑使这种方法适用于您的场景。
  • 您要实现的目标需要使用conditional rendering,其中最简单的实现是使用 React 的状态,并使用按钮切换布尔值以显示是否要显示某些内容(根据他的例子)。这是一个禁用项目并有条件地呈现另一个项目的有状态 codepen 示例:codepen.io/kjscott27/pen/ExPpGZb
猜你喜欢
  • 2016-01-18
  • 2013-09-24
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2020-07-22
  • 2021-06-13
  • 2011-08-15
  • 1970-01-01
相关资源
最近更新 更多