首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react中创建这个3按钮?

如何在react中创建这个3按钮?
EN

Stack Overflow用户
提问于 2021-07-13 08:48:49
回答 2查看 155关注 0票数 0

我正在尝试创建这个3按钮,但是我不能创建第三个按钮,因为我不知道如何使用多个useState来反应Js。

这是我的密码:

代码语言:javascript
复制
  const ShowOrNot = () => {
    const [showForm, setShowForm] = useState(false);
    const [showPreview , setShowPreview] = useState(false)

    return (
        <div className="col-12">
            {showForm ? (
                <div className={"content-send-form-wrapper"} id="scrollbar-style">
                    <div className={"content-send-form-header"}>
                        <div className={"content-send-form-header-title"}>
                           
                        </div>
                        <h2>
                            New Upload
                        </h2>
                        <div className={"content-send-form-close-btn"}>
                            <button onClick={() => setShowForm(false)} className={"close-modal-btn"}>
                                Close <span></span>
                            </button>
                        </div>
                    </div>
                    <form className={"mt-3 content-send-form-data register-teacher-inputs-box "}>
                        <Row>
                            <div className={"col-lg-6 col-12 mt-4"}>
                                <label
                                    htmlFor={"name"} className={" text-right"}>
                                    <span>*</span>
                                </label>
                                <input type="text" className="form-control" placeholder={"عنوان"}
                                       name={""} required="true"
                                       // value={this.name}
                                       // onChange={this.onChange}
                                       onBlur={(e) => e.target.placeholder = "عنوان"}
                                       onFocus={(e) => e.target.placeholder = ""}
                                />
                            </div>
                            <div className={"col-lg-6 col-12 mt-4"}>
                                <label
                                    htmlFor={"country"} className={" text-right"}>
                                    <span>*</span>
                                </label>
                                <input type="text" className="form-control" placeholder={"دسته بندی"}
                                       name={"country"}
                                       // value={this.country}
                                       // onChange={this.onChange}
                                       required="true"
                                       onBlur={(e) => e.target.placeholder = "دسته بندی"}
                                       onFocus={(e) => e.target.placeholder = ""}
                                />
                            </div>
                        </Row>
                        <Row>
                            <div className="col-12 mt-3">
                                <label
                                    htmlFor={"name"} className={"label-full-size text-right"}>
                                    <span>*</span>
                                </label>
                                <input type="text" className="form-control" placeholder={"خلاصه توضیحات"}
                                       name={""} required="true"
                                       // value={this.name}
                                       // onChange={this.onChange}
                                       onBlur={(e) => e.target.placeholder = "خلاصه توضیحات"}
                                       onFocus={(e) => e.target.placeholder = ""}
                                />
                            </div>
                        </Row>
                        <Row>
                            <div className="col-12 mt-3">
                                <label
                                    htmlFor={"name"} className={"label-full-size text-right textarea-label"}>
                                    <span>*</span>
                                </label>
                                <textarea  className="video-text-form form-control" placeholder={"متن ویدیو"}
                                       name={""} required="true"
                                       // value={this.name}
                                       // onChange={this.onChange}
                                       onBlur={(e) => e.target.placeholder = "متن ویدیو"}
                                       onFocus={(e) => e.target.placeholder = ""}
                                />
                            </div>
                        </Row>
                        <Row>
                            <div className="col-12 mt-3 video-upload-input-btn">
                                <VideoUpload />
                            </div>
                        </Row>
                        <Row>
                            <div className="col-lg-6 col-12 mt-3">
                              <PosterUpload />
                            </div>
                            <div className="col-lg-6 col-12 mt-3">
                                <CoverUpload />
                            </div>
                        </Row>
                    </form>
               
                    {showPreview ? (
                        <div>
                            show preview
                        </div>
                    ) : (<Row>
                        <div className="col-lg-8 col mt-3">
                            <button className="preview-send-data-btn" onClick={function(event){ setShowPreview(true); setShowForm(true)}}>
                               Preview
                            </button>
                        </div>
                        <div className="col-lg-4 col mt-3">
                            <button className="draft-send-data-btn">
                               Draft
                            </button>
                        </div>
                    </Row>)}

                </div>
            ) : (
                <div>
                    <button className="upload-content-btn w-100" onClick={() => setShowForm(true)}>
                        <span className="ml-2">
                     
                    </span>New Upload </button>
                </div>
            )}
        </div>
    );
};

ReactDOM.render(<ShowOrNot />, document.getElementById("root"))

我想当点击预览按钮showFrom不显示和其他形式的showPreview显示代替。我的问题不是CSS,只是我不知道如何使用useState,就像我使用它之前的步骤一样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-13 10:06:18

在您的示例预览内的窗体,因此,如果您隐藏窗体预览也将被隐藏。

您需要正确地组织组件,以便您的代码易于阅读和理解。没有这一点,你就无法解决任何足够复杂的任务。

可以像这样开始。

代码语言:javascript
复制
const ShowOrNot = () => {
  const [showForm, setShowForm] = useState(false);
  const [showPreview, setShowPreview] = useState(false);
  const [formHidden, setFormHidden] = useState(false);

  return (
    <div className="col-12">
      {!showForm ? (
        <ShowFormButton onClick={() => setShowForm(true)} />
      ) : undefined}

      {showForm ? (
        <div className={'content-send-form-wrapper'} id="scrollbar-style">
          <div className={'content-send-form-header'}>
            <div className={'content-send-form-header-title'}></div>
            <h2>New Upload</h2>

            <HideFormButton
              onClick={() => {
                setShowForm(false);
              }}
            />
          </div>

          {!formHidden ? <MyForm /> : undefined}

          {!showPreview ? (
            <ShowPreviewButton
              onClick={() => {
                setShowPreview(true);
                setFormHidden(true);
              }}
            />
          ) : undefined}
          {showPreview ? (
            <div>
              Preview
              <SendButton
                onClick={() => {
                  setFormHidden(false);
                  setShowPreview(false);
                  setShowForm(false);
                }}
              />
            </div>
          ) : undefined}
        </div>
      ) : undefined}
    </div>
  );
};

function SendButton({ onClick }) {
  return (
    <div>
      <button className=" w-100" onClick={onClick}>
        <span className="ml-2"></span>Send
      </button>
    </div>
  );
}

function ShowFormButton({ onClick }) {
  return (
    <div>
      <button className="upload-content-btn w-100" onClick={onClick}>
        <span className="ml-2"></span>New Upload{' '}
      </button>
    </div>
  );
}

function ShowPreviewButton({ onClick }) {
  return (
    <Row>
      <div className="col-lg-8 col mt-3">
        <button className="preview-send-data-btn" onClick={onClick}>
          Preview
        </button>
      </div>
      <div className="col-lg-4 col mt-3">
        <button className="draft-send-data-btn">Draft</button>
      </div>
    </Row>
  );
}

function HideFormButton({ onClick }) {
  return (
    <div className={'content-send-form-close-btn'}>
      <button onClick={onClick} className={'close-modal-btn'}>
        <span>Close</span>
      </button>
    </div>
  );
}

function MyForm() {
  return (
    <form
      className={'mt-3 content-send-form-data register-teacher-inputs-box '}
    >
      <Row>
        <div className={'col-lg-6 col-12 mt-4'}>
          <label htmlFor={'name'} className={' text-right'}>
            <span>*</span>
          </label>
          <input
            type="text"
            className="form-control"
            placeholder={'عنوان'}
            name={''}
            required="true"
            // value={this.name}
            // onChange={this.onChange}
            onBlur={(e) => (e.target.placeholder = 'عنوان')}
            onFocus={(e) => (e.target.placeholder = '')}
          />
        </div>
        <div className={'col-lg-6 col-12 mt-4'}>
          <label htmlFor={'country'} className={' text-right'}>
            <span>*</span>
          </label>
          <input
            type="text"
            className="form-control"
            placeholder={'دسته بندی'}
            name={'country'}
            // value={this.country}
            // onChange={this.onChange}
            required="true"
            onBlur={(e) => (e.target.placeholder = 'دسته بندی')}
            onFocus={(e) => (e.target.placeholder = '')}
          />
        </div>
      </Row>
      <Row>
        <div className="col-12 mt-3">
          <label htmlFor={'name'} className={'label-full-size text-right'}>
            <span>*</span>
          </label>
          <input
            type="text"
            className="form-control"
            placeholder={'خلاصه توضیحات'}
            name={''}
            required="true"
            // value={this.name}
            // onChange={this.onChange}
            onBlur={(e) => (e.target.placeholder = 'خلاصه توضیحات')}
            onFocus={(e) => (e.target.placeholder = '')}
          />
        </div>
      </Row>
      <Row>
        <div className="col-12 mt-3">
          <label
            htmlFor={'name'}
            className={'label-full-size text-right textarea-label'}
          >
            <span>*</span>
          </label>
          <textarea
            className="video-text-form form-control"
            placeholder={'متن ویدیو'}
            name={''}
            required="true"
            // value={this.name}
            // onChange={this.onChange}
            onBlur={(e) => (e.target.placeholder = 'متن ویدیو')}
            onFocus={(e) => (e.target.placeholder = '')}
          />
        </div>
      </Row>
      <Row>
        <div className="col-12 mt-3 video-upload-input-btn">
          <VideoUpload />
        </div>
      </Row>
      <Row>
        <div className="col-lg-6 col-12 mt-3">
          <PosterUpload />
        </div>
        <div className="col-lg-6 col-12 mt-3">
          <CoverUpload />
        </div>
      </Row>
    </form>
  );
}

ReactDOM.render(<ShowOrNot />, document.getElementById('root'));
票数 0
EN

Stack Overflow用户

发布于 2021-07-13 09:00:07

您应该像这样使用setState代码

代码语言:javascript
复制
setShowForm(false) or setShowForm(true)

代码语言:javascript
复制
setShowPreview(true) or setShowPreview(false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68359270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档