React Native 循环这个

IT技术 javascript reactjs react-native
2021-05-24 13:22:39

当我放入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>
      );
  }
});
1个回答

this 指的是错误的上下文,您需要在词法上绑定范围,这就是胖箭头函数将为您做的事情。

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

onPress={ () => this._handlePress() }

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

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

或者像这样:

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

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

https://rnplay.org/apps/_PmG6Q