부모에서 컴포넌트의 this.state를 어떻게 변경합니까?

user6329530

ReactJS에서 컴포넌트에 상태를 전달할 수 있다는 것을 알고 있습니다.

부모 jsx :

<Display active={this.state.dispActive} />

그리고 다음과 같이 자식 jsx 렌더링에서 사용하십시오 (예제).

<div>Display: {this.props.active ? 'Active' : 'Inactive'}</div>

그러나 이것을 아이의 상태로 두려고하면 작동하지 않습니다.

state = {
    isActive: this.props.active
}

아마도 상태는 생성자에서 한 번 초기화 된 다음 변경되지 않습니다.

소품의 상태가 변경 될 때 여기에서 자식에서 함수를 호출하고 싶습니다. 내가 찾은 유일한 방법은 모든 자녀의 코드를 부모에 포함시킨 다음 코드의 결과로 상태를 전달하는 것입니다.

부모의:

handleDisplayChange = (e) => {
    //Code here then use this.setState to change parent's this.state 
    //which then reflects on the passed props in the child
}

그러나 아이가없는 논리적 부모에 속해 내가 그 개체의 특정 속성 세트 말할 수 원하는 도서관의 일종 포함 어떤 경우 자녀의를 ?

this.display = new Display();
this.display.setActive = this.state.isActive

this.display는 자식에서 구성됩니다. 부모의 맥락에 속하지 않습니다. 난 필요해

  1. this.display.setActive를 설정하는 자식의 함수
  2. 자식 자체의 this.state.isActive를 설정합니다.

parent는 하나의 jsx 생성자에 디스플레이를 배치하고 다른 하나에는 버튼 툴바를 배치해야하므로 Parent.jsx에 속하지 않습니다.

<div className="App">
    <Toggle toggleState={this.toggleState} active={this.state.dispActive}/>
    <Display active={this.state.dispActive} />
</div>

편집 : 잘못된 코드를 붙여넣고 더 이해하기 쉽게 편집했습니다.

Yousaf

상태 변경시 자식에서 함수를 호출해야합니다.

이를 위해 shouldComponentUpdate기능을 사용할 수 있습니다 . 이 함수 안에서 소품이나 상태가 변경되었는지 확인할 수 있습니다. 둘 중 하나라도 변경 한 경우, 당신은 당신이에서 자식 요소에서 호출 할 기능을 어떤 호출 할 수있는 shouldComponentUpdate기능

함수 foo가 상태 또는 소품이 변경 될 때 자식 구성 요소에서 호출해야하는 함수라고 가정합니다 . foo하위 구성 요소 내부에 함수를 정의한 다음 shouldComponentUpdate이 하위 구성 요소 내부 에도 함수 를 정의 합니다.

class Child extends Component {
  state = {
    isActive: this.props.active
  };

  foo() {
    console.log('function called when state or props change');
  }

  shouldComponentUpdate(nextProps, nextState) {
    if (
         this.props.isActive != nextProps.active || 
         this.state.isActive != nextState.isActive
    ) {
        this.foo();   // call function on state or props change
        return true;
    }

    return false;
  }


  render() {
    return <p>{this.state.isActive ? 'active' : 'not active'}</p>
  }
} 

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

React에서 다른 컴포넌트의 MAP 내에 컴포넌트를 어떻게 삽입합니까?

분류에서Dev

이 컴포넌트에 전달 된 속성에 따라 컴포넌트의 데이터를 어떻게 변경합니까?

분류에서Dev

state에 정의 된 배열의 값을 컴포넌트를 바라 보는 컴포넌트로 어떻게 전달합니까?

분류에서Dev

Svelte에서 컴포넌트의 dom 노드를 어떻게 얻습니까?

분류에서Dev

Angular 2-컴포넌트에서 호출되는 서비스를 어떻게 모의합니까?

분류에서Dev

React Modal에 컴포넌트를 어떻게 표시합니까?

분류에서Dev

Camel의 myBatis 컴포넌트에 매개 변수를 어떻게 전달합니까?

분류에서Dev

ReactJS.NET-한 컴포넌트의 props를 다른 컴포넌트에서 어떻게 업데이트합니까?

분류에서Dev

ReactJS에서 한 컴포넌트를 다른 컴포넌트 내에서 어떻게 렌더링합니까?

분류에서Dev

React에서 클래스 컴포넌트 내부에 메소드를 어떻게 정의 할 수 있습니까?

분류에서Dev

React.js 다른 컴포넌트에서 컴포넌트를 어떻게 사용합니까?

분류에서Dev

컴포넌트 외부에서 정적 변수를 호출하려면 어떻게해야합니까?

분류에서Dev

Meteor + React에서 부모 React 컴포넌트에서 자식 React 컴포넌트를 어떻게 렌더링 할 수 있습니까?

분류에서Dev

React에서 컴포넌트를 어떻게 쌓을까요?

분류에서Dev

필터 함수 내에서 React 컴포넌트의 this.state에 어떻게 액세스 할 수 있습니까?

분류에서Dev

React에서 어떤 유형의 컴포넌트를 사용해야합니까 : 기능 컴포넌트 또는 클래스 기본 컴포넌트?

분류에서Dev

컴포넌트를 복합 컴포넌트의 속성으로 어떻게 정의합니까?

분류에서Dev

Laravel 5.4에서 Vue 컴포넌트를 어떻게로드합니까?

분류에서Dev

React에서 자식 컴포넌트를 기반으로 부모의 너비를 어떻게 계산할 수 있습니까?

분류에서Dev

vue 컴포넌트의 링크에 이미지를 업로드하려면 어떻게해야합니까?

분류에서Dev

뷰에서 컴포넌트의 메소드를 어떻게 호출 할 수 있습니까? (vue.js 2)

분류에서Dev

클래스 컴포넌트 (부모)에서 기능 컴포넌트 (하위)의 useState를 변경하는 방법

분류에서Dev

Joomla 컴포넌트에 매개 변수를 올바르게 전달하려면 어떻게해야합니까?

분류에서Dev

angularJs 1.5에서 $ scope 변수를 컴포넌트의 templateUrl의 일부로 어떻게 전달할 수 있습니까?

분류에서Dev

컴포넌트간에 React Hook Modal State를 어떻게 전달할 수 있습니까?

분류에서Dev

Netbeans의 웹 서버 포트를 8383에서 어떻게 변경합니까?

분류에서Dev

컴포넌트가 React Native에서 형제 컴포넌트를 제어하도록하려면 어떻게해야합니까?

분류에서Dev

GRUB 부트 순서를 어떻게 변경합니까?

분류에서Dev

GRUB 부트 순서를 어떻게 변경합니까?

Related 관련 기사

  1. 1

    React에서 다른 컴포넌트의 MAP 내에 컴포넌트를 어떻게 삽입합니까?

  2. 2

    이 컴포넌트에 전달 된 속성에 따라 컴포넌트의 데이터를 어떻게 변경합니까?

  3. 3

    state에 정의 된 배열의 값을 컴포넌트를 바라 보는 컴포넌트로 어떻게 전달합니까?

  4. 4

    Svelte에서 컴포넌트의 dom 노드를 어떻게 얻습니까?

  5. 5

    Angular 2-컴포넌트에서 호출되는 서비스를 어떻게 모의합니까?

  6. 6

    React Modal에 컴포넌트를 어떻게 표시합니까?

  7. 7

    Camel의 myBatis 컴포넌트에 매개 변수를 어떻게 전달합니까?

  8. 8

    ReactJS.NET-한 컴포넌트의 props를 다른 컴포넌트에서 어떻게 업데이트합니까?

  9. 9

    ReactJS에서 한 컴포넌트를 다른 컴포넌트 내에서 어떻게 렌더링합니까?

  10. 10

    React에서 클래스 컴포넌트 내부에 메소드를 어떻게 정의 할 수 있습니까?

  11. 11

    React.js 다른 컴포넌트에서 컴포넌트를 어떻게 사용합니까?

  12. 12

    컴포넌트 외부에서 정적 변수를 호출하려면 어떻게해야합니까?

  13. 13

    Meteor + React에서 부모 React 컴포넌트에서 자식 React 컴포넌트를 어떻게 렌더링 할 수 있습니까?

  14. 14

    React에서 컴포넌트를 어떻게 쌓을까요?

  15. 15

    필터 함수 내에서 React 컴포넌트의 this.state에 어떻게 액세스 할 수 있습니까?

  16. 16

    React에서 어떤 유형의 컴포넌트를 사용해야합니까 : 기능 컴포넌트 또는 클래스 기본 컴포넌트?

  17. 17

    컴포넌트를 복합 컴포넌트의 속성으로 어떻게 정의합니까?

  18. 18

    Laravel 5.4에서 Vue 컴포넌트를 어떻게로드합니까?

  19. 19

    React에서 자식 컴포넌트를 기반으로 부모의 너비를 어떻게 계산할 수 있습니까?

  20. 20

    vue 컴포넌트의 링크에 이미지를 업로드하려면 어떻게해야합니까?

  21. 21

    뷰에서 컴포넌트의 메소드를 어떻게 호출 할 수 있습니까? (vue.js 2)

  22. 22

    클래스 컴포넌트 (부모)에서 기능 컴포넌트 (하위)의 useState를 변경하는 방법

  23. 23

    Joomla 컴포넌트에 매개 변수를 올바르게 전달하려면 어떻게해야합니까?

  24. 24

    angularJs 1.5에서 $ scope 변수를 컴포넌트의 templateUrl의 일부로 어떻게 전달할 수 있습니까?

  25. 25

    컴포넌트간에 React Hook Modal State를 어떻게 전달할 수 있습니까?

  26. 26

    Netbeans의 웹 서버 포트를 8383에서 어떻게 변경합니까?

  27. 27

    컴포넌트가 React Native에서 형제 컴포넌트를 제어하도록하려면 어떻게해야합니까?

  28. 28

    GRUB 부트 순서를 어떻게 변경합니까?

  29. 29

    GRUB 부트 순서를 어떻게 변경합니까?

뜨겁다태그

보관