이번에는 ES6에서 하위 컴포넌트에서 상위 컴포넌트를 호출하는 방법을 보여드리겠습니다. ES6에서 하위 컴포넌트가 상위 컴포넌트를 호출할 때 주의사항은 무엇인가요?
어떤 목적으로 최근 RN을 다시 공부하기 시작했는데, 단계별 학습 튜토리얼을 보다가 최근 문제, 즉 상위-하위 컴포넌트 호출 문제에 직면했습니다.
저는 오랫동안 Baidu에서 이 질문을 해왔습니다. JS의 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> ); } }
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:
js에서 동적으로 레이블을 만들고 속성을 설정하는 방법
위 내용은 ES6의 하위 구성요소에서 상위 구성요소를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!