【问题标题】:React how to change the div name on state change反应如何在状态更改时更改 div 名称
【发布时间】:2021-04-11 08:16:37
【问题描述】:

“hdg-alert-popup”部分,如果状态处于活动状态,则必须是“hdg-alert-popup active” 而如果“hdg-button-login-container”按钮被点击它必须是“hdg-alert-popup”,我该怎么办?

import parse from 'html-react-parser';
import React, { useEffect, useState } from 'react';

const MessageError = (
  titolo: string,
  descrizione1: string,
  descrizione2: string,
  testoBottone: string,

) => {
  const [active, setActive] = useState(true);
  if (testoBottone == "") {
    testoBottone = "Chiudi questo avviso";
  }

  return (
    <section
      className="hdg-alert-popup"
    >

      <div className="hdg-login-popup">
        <div className="hdg-login-popup-container">
          <div className="hdg-login-popup-content">

            <h3 className="hdg-title">{parse(titolo)}</h3>
            <p>
              {descrizione1}
              {descrizione2 != "" && <b>{descrizione2}</b>}
            </p>
          </div>
          <div className="hdg-login-popup-error">
            <div className="hdg-button-login-container"><a href="#" className="hdg-button-back">{testoBottone}</a></div>

          </div>

        </div>

      </div>
    </section>
  );
};

export default MessageError;

【问题讨论】:

  • 我投票结束这个问题,因为询问基本的反应语法
  • className={"hdg-alert-popup" + (active ? " active":"")}。别偷懒了,这是基本的反应语法。

标签: javascript html reactjs typescript jsx


【解决方案1】:

好吧,对于button,你可以根据状态设置className

<div className={active ? "hdg-alert-popup": "hdg-button-login-container"} onClick={() => setActive(state => !state)}><a href="#" className="hdg-button-back">{testoBottone}</a></div>

对于section,你可以做类似的事情:

<section className={`hdg-alert-popup ${active ? "active" : null}`}>

【讨论】:

  • 非常感谢,您能告诉我为什么这种情况对我不起作用吗? {descrizione2 != "" && {descrizione2}}
【解决方案2】:

这可以通过主动切换来实现吗?

import parse from 'html-react-parser';
import React, { useEffect, useState } from 'react';

const MessageError = (
  titolo: string,
  descrizione1: string,
  descrizione2: string,
  testoBottone: string,

) => {
  const [active, setActive] = useState(true);
  if (testoBottone == "") {
    testoBottone = "Chiudi questo avviso";
  }

  return (
    <section
      className=`hdg-alert-popup ${active ? "active": '' }`
    >

      <div className="hdg-login-popup">
        <div className="hdg-login-popup-container">
          <div className="hdg-login-popup-content">

            <h3 className="hdg-title">{parse(titolo)}</h3>
            <p>
              {descrizione1}
              {descrizione2 != "" && <b>{descrizione2}</b>}
            </p>
          </div>
          <div className="hdg-login-popup-error">
            <div className="hdg-button-login-container" onClick={() => this.setActive(false)}><a href="#" className="hdg-button-back">{testoBottone}</a></div>

          </div>

        </div>

      </div>
    </section>
  );
};

export default MessageError;

【讨论】:

  • 非常感谢,您能告诉我为什么这种情况对我不起作用吗? {descrizione2 != "" && {descrizione2}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 2022-01-19
  • 2021-11-27
  • 2020-09-30
  • 1970-01-01
相关资源
最近更新 更多