如何切换 css 类以与 setState Hook 做出反应

Posted

技术标签:

【中文标题】如何切换 css 类以与 setState Hook 做出反应【英文标题】:How to toggle css class in react with setState Hook 【发布时间】:2020-12-10 17:00:26 【问题描述】:

我尝试了不同的方法。但不要设法切换这个 css 类。当我单击它时,书签应该变成蓝色。到目前为止,我可以使用 onClick 将其更改为 false,但随后它不会切换回来。 这是 ToggleBookmark 组件:

const ToggleBookmark = () => 

const [selected, setSelected]=useState(true);

const  toggleBookmark = () => 
setSelected(true?false:true);
   

return(
<svg className=`toggleBookmark $selected ? "toggleBookmark-active" : ""` onClick=toggleBookmark xmlns="http://www.w3.org/2000/svg"   viewBox="0 0 24 24"><path d="M22 2v17.582l-4-3.512-4 3.512v-17.582h8zm2-2h-12v24l6-5.269 6 5.269v-24zm-14 1h-10v2h10v-2zm0 5h-10v2h10v-2zm0 5h-10v2h10v-2zm0 5h-10v2h10v-2z"/></svg>
)

【问题讨论】:

【参考方案1】:

您可以使用findDOMNode 实现此目的。这个问题已经在这里回答了。 Toggle Class in React

对于功能组件:

setSelected(!selected);

【讨论】:

谢谢。我看到了。但我想用 Hooks 解决它。 如你所见,我使用功能组件 setSelected(!selected);【参考方案2】:
  const [selected, toggleSelected]=useState(false);
  return(
  <svg className=`toggleBookmark $selected ? "toggleBookmark-active" : ""` onClick=()=>toggleSelected(!selected) xmlns="http://www.w3.org/2000/svg"   viewBox="0 0 24 24"><path d="M14.568.075c2.202 1.174 5.938 4.883 7.432 6.881-1.286-.9-4.044-1.657-6.091-1.179.222-1.468-.185-4.534-1.341-5.702zm-.824 7.925s1.522-8-3.335-8h-.409v12l-2.5-2.634-2.5 2.634v-12h-3v24h20v-13c0-3.419-5.247-3.745-8.256-3z"/></svg>
 )

而且它正在工作。谢谢

【讨论】:

【参考方案3】:

它不会回头,因为你的 tri 条件总是错误的。 使用 selected 作为 tri 条件以更改回而不是 true: 5号线

【讨论】:

以上是关于如何切换 css 类以与 setState Hook 做出反应的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Tailwindcss 提取自己的类以分离文件

如何在 React JS 中的 css 转换结束后使用 setState?

切换并重新切换点击类以制作漂亮的复选框

如何在.NET中以与浏览器相同的大小呈现文本给文本的CSS

如何以与 toad 相同的方式在 PL/SQL 中导出数据库对象?

css 我可以使用画布禁用每个鼠标交互以与底层对象进行交互吗?