如何将导航道具传递到数组的map(function())?

时间:2018-07-18 05:21:58

标签: react-native react-navigation

获取

  

未定义不是对象(正在评估'_this3.props.navigation')

点击TouchableOpacity时出错。

render() {
     List = this.state.availableList.map(function(demo){
     return(
       <View key={(exam, index) => index.toString()} >
         <TouchableOpacity 
           onPress={() => this.props.navigation.navigate('BCD')} >
           <View>
             <Text>{demo.Name}</Text>
             <Text>{demo.Address}</Text>
           </View>
         </TouchableOpacity>
       </View>
     );
   });
  return (
<View>
{List}
</View>

    );
  }

在map(function())this.props.navigation没有得到,所以我的问题是如何传递道具?

2 个答案:

答案 0 :(得分:2)

您应该在地图上使用箭头功能

this.state.availableList.map( (demo) => {

应用于您的渲染

const { availableList } = this.state
return (
  <View>
    availableList.map( (demo) => {
    return(
        <View key={(exam, index) => index.toString()} >
          <TouchableOpacity onPress={() => this.props.navigation.navigate('BCD')} >
            <View>
              <Text>{demo.Name}</Text>
              <Text>{demo.Address}</Text>
            </View>
          </TouchableOpacity>
        </View>
      );
    })}
  </View>

  );
}

答案 1 :(得分:1)

我认为最好在map中使用箭头功能,如下所示。

render() {
     List = this.state.availableList.map(demo =>{
     return(
       <View key={(exam, index) => index.toString()} >
         <TouchableOpacity 
           onPress={() => this.props.navigation.navigate('BCD')} >
           <View>
             <Text>{demo.Name}</Text>
             <Text>{demo.Address}</Text>
           </View>
         </TouchableOpacity>
       </View>
     );
   });
  return (
<View>
{List}
</View>

    );
  }