简单的三元运算符抛出意外的错误消息

Simple ternary operator throwing unexpected error message

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

换句话说,当用户导航到一个页面时,我使用 pathname 来填充页面标题和内容等内容。其中一个 pages/routes 包含一个 name/title,它通常用大写的驼峰式大小写(“SoCal”),因此我使用以下代码,其中包含一个三元运算符,用于确定 location = "socal" 是否为是的,我希望将 location 变量设置为“SoCal”,这样当我使用 <h1>{location}</h1> 填充页面标题时,它会正确显示。

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

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

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

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

"Expected an assignment or function call and instead saw an expression. (no-unused-expressions)"

关于我做错了什么的想法?

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

应该是这样的:

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

你的情况。

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

问题出在这里:

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

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