Как получить доступ к `this` внутри renderRow ListView?

Вариант 1: вручную связать это по вызову

В коде замените ссылку на {this.renderMovie} whith {this.renderMovie.bind(this)}

  render() { console.log('this', this); //this is an instance of AwesomeProject if (!this.state.loaded) { return this.renderLoadingView(); } return ( {amp}lt;ListView dataSource={this.state.dataSource} renderRow={this.renderMovie.bind(this)} //{amp}lt;-- change here style={styles.listView} /{amp}gt; ); } 

И, конечно, связать правильную функцию:

  constructor(props) { super(props); this.something = this.something.bind(this); // {amp}lt;-- Not this function this.renderMovie = this.renderMovie.bind(this); // {amp}lt;-- This function!! this.state = { dataSource: new ListView.DataSource({ rowHasChanged: (row1, row2) ={amp}gt; row1 !== row2, }), loaded: false, }; } 

Мне нравится этот самый лучший. Вам просто нужно объявить задействованную функцию, используя синтаксис стрелки, вот так:

  renderMovie(movie) { //code here } 

становится таким:

  renderMovie = (movie) ={amp}gt; { //code here } 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector