2017-10-19 4 views
0

setStateA 구성 요소에서 B 구성 요소로 보내고 싶습니다. AB은 다른 JS 파일입니다. BA으로 가져오고 B 안에있는 함수에 액세스하려고했습니다. 또한 B에 정적으로 함수를 만들었습니다. 정적 함수가 없으므로 인스턴스가 없어서 정적으로 this에 액세스 할 수 없었습니다.React Native - 다른 JS 파일간에 setState

A.js

import B from '../B'; 
class A extends React.Component { 
    ChangeBContent(){ 
     B.SetContent(); 
    } 

    render(){ 
     return(
      <View> 
       <SpeicalBtn onPress={()=> this.ChangeBContent()}/> 
      </View> 
     ); 
    } 
} 

module.exports = A; 
AppRegistry.registerComponent('myApp',() => A); 

B.js는

class B extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      content:'' 
     } 
    } 

    SetContent(){ 
     this.setState({content:'123'}); 
    } 

    render(){ 
     return(
      <View> 
       <Text>{this.state.content}</Text> 
      </View> 
     ); 
    } 
} 

module.exports = B; 
AppRegistry.registerComponent('myApp',() => B); 
+0

"정적"메서드'B.SetContent();를 호출하려고하는 대신 오히려'B' 인스턴스를 얻고 인스턴스를 통해 메서드를 호출하는 방법을 찾아야한다. . – Panther

답변

1

당신은 다른 컨테이너 구성 요소로 포장해야합니다.

ContentC.js

class ContentC extends React.Component { 
     constructor(props) { 
     super(props); 
     this.state = { 
      contentA:'', 
      contentB: '' 
     } 
    } 
    SetContentA(){ 
     this.setState({contentA:'123'}); 
    } 
    SetContentB(){ 
     this.setState({contentB:'123'}); 
    } 
    render(){ 
     return(
     <ClassA content={this.state.contentA} /> 
      <ClassB content={this.state.contentB}/> 
     ); 
     } 
    } 

그리고 지금 당신은 당신은 더러운 트릭을 할 수 있지만, 난 당신이 더 청소기 접근 방식이 필요합니다 생각 props.contentAprops.contentB

3

와 컨텐츠를 사용할 수 있습니다.

여기에는 redux과 같은 상태 관리 라이브러리를 사용하는 곳이 하나 있습니다. 여기에는 글로벌 저장소가 하나 있으며 작업을 발송합니다. 당신은이 stackoverflow을 볼 수있다 post

+0

내가 참조 할 수있는 예는 무엇입니까? Redux에서 익숙하지 않은 매우 새롭고 익숙한 몇 가지 redux 문서를 읽고 혼란스러워합니다. –

+0

반응을 어떻게 시작 했습니까? 처음에는 모든 것을 직접 구성 할 필요가 없으므로 스타터 키트를 시작하는 것이 좋습니다. 내가 게시 한 링크로 이동하여 문제가 발생하면 다시 댓글을 달아서 구성하는 방법을 단계별로 알려 드리겠습니다. –

+0

반응 탐색부터 시작 –