버튼을 클릭하면 모든 텍스트 및 기타 구성 요소 요소를 양식 지우기

아이샤

inputtext 필드, 선택 옵션, 라디오 버튼 및 textArea가있는 간단한 양식을 만들었습니다. 제출 용 버튼과 양식의 모든 텍스트를 '지우기'용으로 하나의 버튼도 만들었습니다. inputfield와 textarea의 텍스트에서 텍스트를 지울 수 있으며 parentClass (Form.js)에 콜백 함수를 만들었으며 거기에서 데이터를 TextArea.js 클래스에 소품으로 보냈습니다.

       <TextArea
          callbackFromParent={this.parentCallback}
        />

그리고 '모두 지우기'버튼을 클릭하면 textInput 필드와 텍스트 영역이 지워 지므로 '선택'옵션과 다른 구성 요소에 대해 동일한 방식으로 구현하려고 생각했습니다. 그래서 상태 및 콜백 함수 (parentCallback)에서 select 변수를 생성하고 select를 다시 설정하고 callbackFromParent로 구성 요소에 props로 보냈지 만 상태에서이 props 값을 다음과 같이 설정합니다. selectCountry : this.props.callbackFromParent, 선택 구성 요소에서 '모두 지우기'버튼과 기능이 있으므로 TextArea.js 구성 요소로 보내야합니다. 나는이 시점에 갇혀 있고 그것을 어떻게 생각하고 구현하는지 정확히 알지 못한다. Google을 통해 살펴 보았지만 원하는 답을 얻지 못했습니다. 각 양식 입력 필드 텍스트를 지우고 선택 옵션, 라디오 버튼 등을 재설정하고 싶습니다. 제가받을 수있는 모든 도움에 감사 할 것입니다. 미리 감사드립니다!

내 코드 링크 : https://codesandbox.io/s/reactforms-w1y38

Form.js:

import React from "react";
import Select from "./Select";
import SelectGender from "./RadioButton";
import TextArea from "./TextArea";

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

    this.state = {
      value: "",
      select: ""
    };
  }

  onChange = e => {
    this.setState({
      value: e.target.value
    });
  };

  //Child to Parent — Use a callback and states
  // OR WE CAN SAY THAT PARENT NEED data FROM CHILD AND WE DO :
  parentCallback = () => {
    this.setState({
      value: "",
      select: ""
    });
  };

  render() {
    return (
      <div>
        <h3>Child form</h3>
        <label>Enter name: </label>
        <input type="text" value={this.state.value} onChange={this.onChange} />
        <p>You Entered: {this.state.value}</p>

        <Select callbackFromParent={this.parentCallback} />
        <SelectGender />
        <br />
        <TextArea
          callbackFromParent={this.parentCallback}
          //Data passing from parent to child
          dataFromParent={this.state.value}
        />
      </div>
    );
  }
}

export default Form;

-------------------------

Select.js

import React from "react";

class Select extends React.Component {
  state = {
    selectGenderOptions: ["Male", "Female", "Others"],
    selectCountry: this.props.callbackFromParent
  };

  render() {
    console.log("Select props", this.props);
    return (
      <div>
        <label>
          {/* <select selectGenderOptions={this.state.selectGenderOptions} /> */}
          Select Gender:
          <select>
            <option value="select" selected className="text-hide">
              {" "}
              {/*//change the Css style if you dnt want to hide the text */}
              Please select
            </option>
            <option value="male">Male</option>
            <option value="female">Female</option>
            <option value="other">Other</option>
          </select>
        </label>

        <label>
          <h3>Select Country</h3>
          <select>
            <option value="select" selected>
              {" "}
              Select Country{" "}
            </option>

            <option value="ind">India</option>
            <option value="pak">Pakistan</option>
            <option value="bang">Bangladesh</option>
            <option value="dub">Dubai</option>
            <option value="swe">Sweden</option>
            <option value="dan">Danmark</option>
            <option value="usa">USA</option>
            <option value="aus">Australia</option>
          </select>
        </label>
      </div>
    );
  }
}

export default Select;

-----------------------------
TextArea.js

import React from "react";

class TextArea extends React.Component {
  state = {
    textAreaValue: "",
    inputValue: ""
  };

  textAreaHandler = event => {
    this.setState({ textAreaValue: event.target.value });
  };

  onSubmitHandler = () => {
    return `Your comment ${this.state.textAreaValue}`;
  };

  clearAllHandler = e => {
    e.preventDefault();
    this.setState({
      textAreaValue: "",
      inputValue: this.props.callbackFromParent(this.state.inputValue)
    });
  };

  // sendDataFromChild = () => {
  //   this.props.callbackFromParent();
  // };

  render() {
    console.log("inputvalue", this.props);
    console.log("callback", this.props.callbackFromParent);
    return (
      <div>
        <label>
          <h3>Comment:</h3>
          <textarea
            value={this.state.textAreaValue}
            placeholder="Write anything"
            onChange={this.textAreaHandler}
          />
        </label>
        <div>
          <input type="submit" value="Submit" onClick={this.onSubmitHandler} />
          <button onClick={this.clearAllHandler}>Clear All</button>
        </div>
        <p>You wrote: {this.state.textAreaValue}</p>
        <p>Data Coming From Parent AS props: {this.props.dataFromParent}</p>
      </div>
    );
  }
}

export default TextArea;

여기에 이미지 설명 입력

Egor

몇 가지 사항을 발견하고 코드를 다시 작업했습니다 . 여기에서 모든 변경 사항을 확인하십시오 https://codesandbox.io/s/reactforms-r6w6p?fontsize=14 . 기본 아이디어를 보여주기 위해 일부 필드를 제거한 후 다른 필드에 적용 할 수 있습니다.

설명:

  • 먼저 반응 앱에는 단일 상태가 있습니다. 모든 구성 요소에 대해 상태를 생성하지 않도록하십시오 ( Form구성 요소 에서 하나를 제외한 모든 상태를 제거했습니다 ). 이제 진실의 소스는 하나뿐입니다. 실제로 상태가 하나 더 index.js있으므로 작은 정리 작업을 수행하고 상태를 Form구성 요소에 전달해야 합니다. 나는 당신이 아이디어를 얻었기를 바랍니다.
  • 이벤트와 값은 부모에서 자식 구성 요소로 소품으로 전달되어야하며 (Select 및 ButtonRow에 대해 어떻게 수행했는지 참조) 그렇게 호출해야 this.props.myFunc()합니다.
  • select속성 valueonChange이벤트 를 통해 제어 가능하게 만드십시오 (코드 참조).

찾고있는 것이 아니라면 알려주세요.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

요소 jQuery를 클릭하면 부모 양식 클래스 가져 오기

자식 구성 요소를 클릭하면 부모 구성 요소 속성 가져 오기

부모 구성 요소를 클릭하면 자식 구성 요소에서 데이터 가져 오기

부모 및 자식 구성 요소에는 모두 버튼이 있으며 자식 버튼을 클릭하면 부모 버튼이 호출됩니다.

Vue - 루트 구성 요소 및 모든 하위 구성 요소에 대한 도우미 만들기

Python Selenium : 텍스트를 기반으로 요소 찾기 및 버튼 클릭

Angular- 구성 요소를 클릭하면 해당 구성 요소의 모든 인스턴스가 다시 초기화됩니다.

자식 함수 구성 요소에서 부모 클래스 구성 요소로 양식 값 보내기

Jest 및 Enzyme을 사용하여 React (Native)에서 부모 구성 요소의 기능을 구성 요소를 테스트하는 방법은 무엇입니까?

ZK의 모든 구성 요소에서 텍스트 끌기를 방지하는 방법

스타일이 지정된 구성 요소의 경우 모든 구성 요소 스타일을 .hover 구성 요소 스타일로 계단식으로 만들려면 어떻게해야합니까?

EmberJS-하위 구성 요소의 양식 필드 지우기

Angular 8 : 사용자가 자식 구성 요소 텍스트 상자를 클릭 할 때 부모 구성 요소가 감지하도록 함

jquery 모든 양식 요소 가져 오기 : 입력, 텍스트 영역 및 선택

반응 및 스타일 구성 요소를 사용하여 인쇄할 때 버튼을 숨기는 방법은 무엇입니까?

다른 구성 요소 라디오 버튼 옵션을 기반으로 양식 요소를 비활성화하는 방법

각진 형식 요소를 클릭하면 부트 스트랩 모달 팝업 구성 요소가 작동하지 않습니다.

버튼 클릭 후 구성요소 숨기기(로그인) 및 다른 구성요소 표시

.container를 상속하도록 다른 모든 구성 요소를 읽는 마스터 구성 요소 만들기

자식 구성 요소의 버튼 클릭 시 부모 구성 요소를 다시 렌더링하는 방법

vue는 부모 버튼을 클릭하여 자식 구성 요소에서 버튼을 클릭했습니다.

별도의 구성 요소에있는 버튼에서 양식로드 및 미리 채우기

메뉴 구성 요소에서 마우스를 가져갈 때 버튼의 아이콘 및 텍스트 색상을 변경하려면

부모 구성 요소의 저장 버튼을 사용하여 데이터를 제출하기 전에 부모 구성 요소와 자식 구성 요소 모두에서 오는 사용자 입력을 확인하는 방법은 무엇입니까?

구성 요소 A 기능을 클릭하면 서비스를 사용하여 구성 요소 B의 일부 데이터를 인쇄하고 싶습니다.

Reactjs 다른 구성 요소에서 버튼을 클릭하는 형식 숨기기

Java : Paintcomponet 및 기타 구성 요소를 모두 배치하는 방법

부모 지정 스타일을 적용하기위한 각도 구성 요소

Angular의 자식 구성 요소에서 버튼을 클릭하면 부모 구성 요소 속성에 값을 설정하는 방법

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관