【问题标题】:handling style in functional component in react jsreact js中功能组件中的处理样式
【发布时间】:2020-05-12 15:50:45
【问题描述】:

我正在使用一个功能组件,并创建了一个侧边栏菜单结构,带有父子方式(下拉菜单)。因此,当我单击父级时,应该切换一个活动类,并在其下一个元素切换样式>显示>无/块。

        <Fragment key={index}>
          <button
            className='dropdown-btn bg-transparent haschild'
            style={{ border: 'none' }}
          >
            {data.name} <i className='fas fa-chevron-right'></i>
          </button>
          <div 
            className='dropdown-container'>
            <Content
              config={menuItem.children}
              children={true}
            />
          </div>
        </Fragment>

关于使用效果

useEffect(() => {
   var dropdown = document.getElementsByClassName("haschild");
   var i;
   for (i = 0; i < dropdown.length; i++) {
     dropdown[i].addEventListener("click", function () {
       this.classList.toggle("active");
       var dropdownContent = this.nextElementSibling;
       if (dropdownContent.style.display == "none") {
         dropdownContent.style.display = "block";
       } else {
         dropdownContent.style.display = "none";
       }
     });
   }
 },[]);

我上课的地方都有孩子 在那个元素上,我必须激活一个类 并在其下一个兄弟姐妹上,想要添加带有显示的样式属性

【问题讨论】:

  • 这里没有你的意思。

标签: javascript css reactjs


【解决方案1】:

当使用像 react 这样不直接操作 DOM 的框架时,不建议这样更改样式。 相反,您应该做的是使用类并在反应中切换它们,而不是使用document.getElementsByClassName 或类似函数。

这可能看起来像这样,具体取决于您的需要:

const ToggleButton = () => {
  const [active, setActive] = useState(false);
  return (
    <button onClick={() => setActive(prev => !prev)} className={active ? 'active' : 'inactive'}>
      Toggle active
    </button>

  );
};

此组件将呈现一个按钮,单击该按钮可在 activeinactive 类之间切换。其余的可以而且也许应该用纯 CSS 来完成。

~ 等现代 CSS 组合符可用于影响以下元素。您可以阅读有关 CSS 组合器的更多信息here

【讨论】:

  • 感谢您的回复,是的,这是有效的,但它会立即在我的所有按钮上添加活动类..
  • @shashiverma 它不应该将active 类而是inactive 添加到所有按钮,直到您单击它们。您可以将 active? 'active' : 'inactive' 更改为 active &amp;&amp; 'active' 以没有 inactive
猜你喜欢
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2017-09-15
  • 2017-01-19
  • 2021-04-17
  • 1970-01-01
相关资源
最近更新 更多