어떤 목적으로 최근에 RN을 다시 공부하기 시작했는데, 단계별로 학습하기 위한 튜토리얼을 보다가 최근 문제, 즉 부모-자식 컴포넌트의 메소드 호출 문제에 직면했습니다. 오랫동안 Baidu에서 이 문제를 검색해 왔습니다. JS의 ES6 구문에서 클래스를 사용하여 구성 요소를 생성할 때 하위 구성 요소가 상위 구성 요소의 메서드를 호출하고 시뮬레이터에서 계속 오류를 보고합니다. 이 문서에서는 주로 ES6에서 하위 구성 요소가 상위 구성 요소를 호출하는 방법을 공유합니다. 그것이 모두에게 도움이 되기를 바랍니다.
제가 본 영상은 es5 구문을 기반으로 한 코드라서 구문이 조금 다릅니다.
es5 구문에서 메서드의 this는 RN이 처리해 주었기 때문에 영상의 예시에 따라 효과를 얻을 수 있지만 es6은 직접 작성해야 할 것 같습니다. .
구체적인 작성 방법은 this.xxxxx = this.xxxxx.bind(this);
를 추가하거나 하위 구성 요소를 바인딩할 때 this.xxxxx.bind(this)를 작성하는 것입니다.
여기서는 별로 없습니다. 필요한 사람들이 참조할 수 있도록 코드가 여기에 있습니다.
export default class TestPrj extends Component { constructor(props){ super(props); this.timesReset = this.timesReset.bind(this); this.state = {timex:2}; } timesReset(){ this.setState({ timex:0 }); } render() { return( <View style={styles.container}> <Son ref="Son1" timex={this.state.timex} timesReset={this.timesReset}/> //或者<Son ref="Son1" timex={this.state.timex} timesReset={this.timesReset.bind(this)}/> </View> ); } } class Son extends Component{ constructor(props){ super(props); this.state = {times:this.props.timex}; } componentWillReceiveProps(props){ console.log(this.props); this.setState({ times:props.timex }) } timesReset(){ this.props.timesReset(); } render(){ return( <View style={styles.container}> <Text style={styles.instructions}> 儿子:虽然你揍了我 {this.state.times} 次,但是我 永 不 屈 服!! </Text> <TouchableHighlight style={styles.btn} underlayColor={'pink'} onPress={this.timesReset.bind(this)}> <Text style={{textAlign:'center'}}>爹,再给你儿子一次机会!!</Text> </TouchableHighlight> </View> ); } }
관련 권장 사항:
Vuejs2.0 하위 구성 요소는 상위 구성 요소의 메서드를 호출합니다.
vue는 ref를 사용하여 상위 구성 요소가 하위 구성 요소 인스턴스를 호출하도록 합니다.
Vue2.0 간의 관계에 대해 상위 구성요소와 하위 구성요소 이벤트 전송 및 수신
위 내용은 하위 구성 요소는 상위 구성 요소의 메서드 인스턴스를 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!