2017-12-05 4 views
0

상위 구성 요소에서 삭제 기능을 처리하는 하위 구성 요소에 모달이 있습니다. 이것이 모달의 가장 논리적 인 장소 인 것처럼 모달의 상태 (열린 상태 또는 닫힌 상태)를 유지하고 있습니다. removeItem 코드가 실행 된 후React : 부모로부터 하위 구성 요소의 모달 닫기

부모

removeItem() { 
    console.log('clicked'); 
    }; 

... 

<DeleteButton deleterecord={()=>this.removeItem(data.row._original._id)}/> 

아이

close() { 
    this.setState({ showModal: false }) 
}; 

open() { 
    this.setState({ showModal: true }) 
}; 


render() { 

return(
    <div> 
    <Button 
    bsStyle="primary" 
    bsSize="small" 
    onClick={this.open.bind(this)} 
    > 
    Delete 
    </Button> 

    <Modal 
    show={this.state.showModal} 
    onHide={this.close.bind(this)} 
    bsSize="small" 
    > 
    ... 

어떻게 부모로부터 모달을 닫아야합니다.

+0

당신은 기본적으로 하위 구성 요소의 상태를 업데이트 부모로부터 자식 구성 요소의 함수를 호출 할 수 있습니다. 이것을 확인하십시오 https://stackoverflow.com/questions/40235420/call-child-method-from-parent-in-react/40235756#40235756 –

+0

참조를 사용하여 자식 닫기 함수를 호출하도록 내 솔루션을 편집했습니다. 그것이 작동하는지 확인하십시오. – Rodius

답변

3

ref를 사용하여 하위 닫기 함수를 호출 할 수 있습니까?

부모

removeItem() { 
     console.log('clicked'); 
     this.child.close(); 
    } 

    render() { 
     return (
     <div> 
      <ChildWithModal ref={(ref) => { this.child = ref; }} /> 
     </div> 
    ); 
    } 

아이

... 

close() { 
    this.setState({ showModal: false }) 
}; 
+0

고마워요.하지만 구성 요소도 부모에 있습니다. 내 질문에 자녀 코드 일부를 포함하도록 수정합니다 –

+0

"this.child"가 실제로 무엇이되어야 하는가? 하위 구성 요소의 이름은 무엇입니까? –

+0

"child"는 ref의 이름입니다. 어떤 이름으로 주어도 괜찮습니다.). 구성 요소를 쉽게 식별 할 수있는 무언가를 사용해보십시오. 하위 구성 요소의 별칭이라고 생각하십시오. – Rodius