嗨,我是新生的反应本地人,我正在开发示例聊天应用。目前我正面临一个基本的导航问题。任何帮助表示赞赏。
我需要在点击时从聊天列表导航到聊天屏幕。我使用Android模拟器使用Android工作室。为此,我写了剧本。但是当我点击右下角的on_ress函数时,我得到了错误,该函数在下面的代码中定义了
onContactPress = (item) =>{
Alert.alert();
}
renderFlatListItem({item}) {
return (
<View style={styles.container}>
<TouchableOpacity onPress={() => this.onContactPress(item)} >
<Image style={styles.rightArrow}
source={require('../../images/right_arrow.png')}/>
</TouchableOpacity>
</View>
)
}
,错误是
undefined is not an object (evaluating '_this3.onContactPress()')
我在这里做错了什么?有没有办法将所选人员的联系方式传递给下一个屏幕?请帮帮我。
答案 0 :(得分:0)
这是在React Class o功能组件中吗?
如果第二次通话只是onContactPress没有这个,如果你的情况是第一次,也许你有一个babel问题。
答案 1 :(得分:0)
好的尝试这个解决方案
更改你的onContactPress
<强>从强>
onContactPress = (item) =>{
Alert.alert();
}
以强>
onContactPress({item}) {
Alert.alert();
}
因为胖箭头函数应该在类
之外定义答案 2 :(得分:0)
您现在可能已经解决了这个问题。我自己是 React-Native 的新手,在遇到同样的问题后遇到了你的问题,我意识到答案一直在我面前。
我有一个组件,其状态包含使用构造函数方法创建的名称数组。 理想情况下,渲染时这是我在 Android 设备 A list of User names 上期望的布局,因为我已经分配了一个键属性和名称数组索引的值,当单击用户名时,我想控制台。 log(i), (i) 是作为参数提供给 onPress={} 事件侦听器中的 getValue() 函数的索引。
但这正是我收到 TypeError: undefined is not an object (evaluating 'this.getValues') 错误的原因。
我试着阅读文档,我用谷歌搜索,我查看了以前的工作代码,我做了所有的事情,但没有任何效果。
直到我从这里更改了我的 renderName 方法后,才起作用
getValues(i){
console.log(i);
}
renderName(){
return this.state.names.map(function(name,i){
return (
<View>
<TouchableHighlight
key={i}
style={styles.viewName}
onPress={() => this.getValues(i)}>
<Text style={styles.name}>{name}</Text>
</TouchableHighlight>
</View>
)
})
}
为此
getValues(i){
console.log(i);
}
renderName(){
return this.state.names.map((name,i) => {
return (
<View>
<TouchableHighlight
key={i}
style={styles.viewName}
onPress={() => this.getValues(i)}>
<Text style={styles.name}>{name}</Text>
</TouchableHighlight>
</View>
)
})
}
唯一的区别是我使用了一个粗箭头函数 this.state.names.map((name,i) => { 而不是普通的 this.state.names .map(function(name,i){
做出改变后的结果正是我所期待的Clicking a user name output the index associated with the name in the array
这可能无法解决您的问题,但我还是会通过以下几点说明
答案 3 :(得分:0)
据我所知,您可能正在使用功能组件,而在功能组件中,您可以直接调用方法而不使用它。只需在方法外添加 const 关键字,无需此关键字即可调用。
答案 4 :(得分:-1)
OnPress使用一个函数,而不是发送封装函数。
试试这个
onContactPress = (item) =>{
Alert.alert();
}
renderFlatListItem({item}) {
return (
<View style={styles.container}>
<TouchableOpacity onPress={this.onContactPress(item)} >
<Image style={styles.rightArrow}
source={require('../../images/right_arrow.png')}/>
</TouchableOpacity>
</View>
)
}