当前位置: 首页 > 面试题库 >

React.js:如何在点击时添加组件?

杨柏
2023-03-14
问题内容

我是React的新手,对某种基本的东西感到困惑。

我需要在单击事件后呈现DOM之后将组件添加到DOM。

我最初的尝试如下,但是没有用。但这是我想尝试的最好的方法。(预先为将jQuery与React混合使用而道歉。)

    ParentComponent = class ParentComponent extends React.Component {
      constructor () {
        this.addChild = this.addChild.bind(this);
      }

      addChild (event) {
        event.preventDefault();
        $("#children-pane").append(<ChildComponent/>);
      }

      render () {
        return (
          <div className="card calculator">
            <p><a href="#" onClick={this.addChild}>Add Another Child Component</a></p>
            <div id="children-pane">
              <ChildComponent/>
            </div>
          </div>
        );
      }
    };

希望我已经清楚需要做什么,希望您能帮助我获得适当的解决方案。


问题答案:

正如@Alex McMillan所提到的那样,使用state来指示应在dom中呈现的内容。

在下面的示例中,我有一个输入字段,当用户单击按钮时,我想添加第二个字段,onClick事件处理程序调用handleAddSecondInput(),将inputLinkClicked更改为true。我正在使用三元运算符来检查真实状态,该状态将呈现第二个输入字段

class HealthConditions extends React.Component {
  constructor(props) {
    super(props);


    this.state = {
      inputLinkClicked: false
    }
  }

  handleAddSecondInput() {
    this.setState({
      inputLinkClicked: true
    })
  }


  render() {
    return(
      <main id="wrapper" className="" data-reset-cookie-tab>
        <div id="content" role="main">
          <div className="inner-block">

            <H1Heading title="Tell us about any disabilities, illnesses or ongoing conditions"/>

            <InputField label="Name of condition"
              InputType="text"
              InputId="id-condition"
              InputName="condition"
            />

            {
              this.state.inputLinkClicked?

              <InputField label=""
                InputType="text"
                InputId="id-condition2"
                InputName="condition2"
              />

              :

              <div></div>
            }

            <button
              type="button"
              className="make-button-link"
              data-add-button=""
              href="#"
              onClick={this.handleAddSecondInput}
            >
              Add a condition
            </button>

            <FormButton buttonLabel="Next"
              handleSubmit={this.handleSubmit}
              linkto={
                this.state.illnessOrDisability === 'true' ?
                "/404"
                :
                "/add-your-details"
              }
            />

            <BackLink backLink="/add-your-details" />

          </div>
         </div>
      </main>
    );
  }
}


 类似资料:
  • 当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片

  • 当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片

  • 问题内容: 我正在编写一个应用程序,并且正在使用它来显示一些文本。现在,我想在文本区域中显示一些可点击的URL以及普通文本,如果用户单击URL,那么URL引用的网页应在新的Web浏览器窗口中打开。 问题答案: 将JEditorPane与HTMLEditorKit或JTextPane结合使用,并将内容类型设置为“ text / html”

  • 我试图创建一个小的GUI,它有2个JButtons和2个JPanels,每个JPanels上都有一些绘图动画。默认情况下,它必须显示第一个JPanel,通过单击第二个JButton我想看到第二个JPanel。所以:我创建了JFrame、Panel1和Panel2,在这里我绘制了我的动画,创建了Button1和Button2,并向它们添加了ActionListeners。我还有一个MainPanel

  • 下面是.java文件中的代码

  • 问题内容: 我一直在寻找如何执行此操作,但到目前为止我还没有找到任何相关的东西,:(我可以嵌套两个函数,但是我只是想知道这是否可行吗? 目前我的JS代码: 我想一键调用两个函数,如何在angularJS中做到这一点?我认为当您添加多个类时会像在CSS中那样直接…但是不是:( 问题答案: 您有2个选择: 创建包装这两个方法的第三个方法。这样做的好处是可以减少模板中的逻辑。 否则,如果要在ng-cli