【问题标题】:Parsing error when trying to add class via state to list item element尝试通过状态将类添加到列表项元素时解析错误
【发布时间】:2020-05-18 15:38:26
【问题描述】:

我有一个 React 应用程序,我正在使用钩子 useState 和 useCallback 来控制页面之间的导航。

这部分有效,但我想突出显示当前页面链接。

因此添加了一个名为“chosen”的新状态元素,它使用“setChosen”进行设置。

const [chosen, setChosen] = useState();
const [showGameViewer, setGamerViewer] = useState(false);
const [showGameCreator, setGameCreator] = useState(false);

然后在我的useCallback中,我使用setChosen:

const handleLinkMenuClick = useCallback(e => { setGamerViewer(false) || (setGameCreator(true) && setChosen(true))});

我的链接看起来像这样,我正在尝试将名为“current”的 CSS 类附加到 className:

<li className="nav-item " {chosen && "current"}>
    <a className="nav-link" href="#" onClick={handleLinkMenuClick}>Show Game Creator</a>
</li>

还有我的 CSS:

.chosen {
    background: yellow;
}

但我收到上述代码 {chosen && "current"} 的错误:

const chosen is undefined. Parsing Error: Unexpected token

我不确定它为什么这么说。我在上面定义了“选择”。所以它应该知道。

有人看出什么不对了吗?

【问题讨论】:

  • setGamerViewer(false) 始终返回 true 并且其余代码不执行,因此选择将始终未定义。此外,您正在尝试向 className 添加一些内容,但它不在括号内。

标签: reactjs react-hooks


【解决方案1】:

你可以有条件地渲染它

<li className={`nav-item ${chosen ? 'current' : ''}`}>
    <a className="nav-link" href="#" onClick={handleLinkMenuClick}>Show Game Creator</a>
</li>

我认为你想添加当前的 CSS,所以你应该把它写成

.current {
    background: yellow;
}

【讨论】:

  • react 使用 jsx,我们在 `` 中使用选择的变量,如果我们不使用 $ 声明它,那么它会将其视为字符串
  • 谢谢,这消除了错误,但我看到所选链接没有任何变化。事实上,我不认为出于某种原因现在设置了“选择”状态变量。
  • 你只设置了gameViewer,||后面的代码没有设置 stateconst handleLinkMenuClick = useCallback(e => { setGamerViewer(false) || (setGameCreator(true) && setChosen(true))});
  • 但是 setChosen 设置为 true
  • 不写成 useCallback 你可以写成箭头函数 const handleLinkMenuClick =(e)=> { setGamerViewer(false) || (setGameCreator(true) && setChosen(true))};
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
相关资源
最近更新 更多