React Native循环这个

Cat*_*tla 6 javascript reactjs react-native

当我放入onPress地图循环时,它不起作用.怎么解决?

var PageOne = React.createClass({
  _handlePress() {
    this.props.navigator.push({id: 2,});
  },
  render () {
      return (
        <View>          
          <TouchableOpacity onPress={this._handlePress}> //work here 
          <Text> One </Text>
          </TouchableOpacity>
          <View style={styles.albums}>
          {
            list.map(function(item, index){
              return (
                <TouchableOpacity key={index} onPress={this._handlePress}> //doesn't work hehre
                  <Text>{item}</Text>
                </TouchableOpacity>
              )
            })
          }
            </View>
      </View>
      );
  }
});
Run Code Online (Sandbox Code Playgroud)

Nad*_*bit 8

this 指的是错误的上下文,你需要将范围设置为词法绑定,这就是胖箭头功能将为你做的事情.

尝试像这样调用你的函数:

onPress={ () => this._handlePress() }
Run Code Online (Sandbox Code Playgroud)

此外,您需要将map函数绑定到正确的上下文,如下所示:

<View style={styles.albums}>
  {
    list.map(function(item, index){
       return (
         <TouchableOpacity key={index} onPress={() => this._handlePress()}> 
           <Text>{item}</Text>
          </TouchableOpacity>
       )
     }.bind(this))
   }
</View>
Run Code Online (Sandbox Code Playgroud)

或者像这样:

<View style={styles.albums}>
  {
    list.map((item, index) => {
       return (
         <TouchableOpacity key={index} onPress={() => this._handlePress()}> 
           <Text>{item}</Text>
         </TouchableOpacity>
       )
     })
   }
</View>
Run Code Online (Sandbox Code Playgroud)

在这里建立了一个工作项目.

https://rnplay.org/apps/_PmG6Q