【问题标题】:Simple ternary operator throwing unexpected error message简单的三元运算符抛出意外的错误消息
【发布时间】:2020-12-12 15:47:13
【问题描述】:

我有一个包含指向子路由的链接的 React 应用程序,我使用子域/路径来填充每个详细信息页面上的道具。

换句话说,当用户导航到一个页面时,我使用pathname 来填充页面标题和内容等内容。其中一个页面/路线包含一个名称/标题,该名称/标题通常用骆驼大写字母(“SoCal”)编写,因此我使用以下代码,其中包含一个三元运算符,确定是否location = "socal",如果是,我想要@ 987654323@ 变量设置为“SoCal”,这样当我使用<h1>{location}</h1> 填充页面标题时,它就会正确显示。

问题在于,当我使用三元运算符时,它总是将位置设置为 SoCal,即使 location 的原始值是德克萨斯(例如)。好像我做错了什么,但看不到是什么。

var location = titleCase(window.location.pathname.replace("/", ""));

function detailPage() {
  const [filter] = useState(location.toLowerCase());
  location = "socal" ? location = "SoCal" : location;
  console.log(location)

请注意,在上面的示例中,我使用 = 而不是您所期望的 ===,因为当我使用 === 时,代码会中断并返回错误消息:

“期望一个赋值或函数调用,但看到一个 表达。 (no-unused-expressions)"

关于我做错了什么有什么想法吗?

【问题讨论】:

    标签: javascript reactjs conditional-operator


    【解决方案1】:

    问题出在这里:

    location = "socal" ? location = "SoCal" : location;
    

    三元语句的第一部分是条件检查。您正在检查“socal”的值是否为真或假。您还在运算符中进行了不允许的赋值。

    【讨论】:

      【解决方案2】:

      您的三元运算符的顺序不正确。您将需要使用以下语法在代码中利用三元运算符。

      应该是这样的:

      variable = (conditional statement) ? (value if true) : (value if false)
      

      在你的情况下。

      location = location === "socal" ? "SoCal" : location 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 2012-12-11
        • 2023-03-24
        • 2011-09-10
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多