每当我单击呈现的行之一时,我就会在这段代码上出现错误。
renderRow(task, sectionID, rowID, hightlightRow) {
return (
<TouchableHighlight style={styles.button} onPress={()=>{
this.props.navigation.navigate('FavTeams', {login: this.props.navigation.getParam('login', '')});
}}>
<Text style={styles.title}>{task.teamtag}||{task.teamname}</Text>
</TouchableHighlight>
)
}
但是,当我在其他页面上测试this.props.navigation.navigate时,这段代码可以与其他按钮正常工作。这是唯一我对这段代码有疑问的情况。
页面是AddTeam,这是我的路线导航代码:
const RootStack = createStackNavigator(
{
Home: {
screen: Login
},
Signup: {
screen: SignUp
},
Dashboard: {
screen: Dashboard
},
FavTeams: {
screen: FavouriteTeams
},
UpcomingGames:{
screen: UpcomingComponent
},
Standings:{
screen: StandingsComponent
},
AddTeam:{
screen: AddTeams
}
},
{
initialRouteName: 'Home'
}
);
答案 0 :(得分:0)
我认为这里的根本问题是navigation
属性没有传递,或者没有正确传递给您要从中调用它的组件。
答案 1 :(得分:0)
我找到了解决方案。显然,ListView
充当其自己的组成部分。因此,通过将this.props.navigation
传递给用于呈现行的参数之一,该函数现在可以用于调用以转到其他页面。
一个例子:
this.getSomeData().then((response)=>{
resp = response
for(someData in response){
resp[someData].nav = this.props.navigation
}
this.setState({
someDataSource = ListView.DataSource().cloneWithRows(resp)
})
})
通过推动this.props.navigation
,我可以将其用作task.nav
。
renderRow(task, sectionID, rowID, hightlightRow) {
return (
<TouchableHighlight style={styles.button} onPress={()=>{
task.nav.navigate('FavTeams', {login: task.user);
}}>
<Text style={styles.title}>{task.teamtag}||{task.teamname}</Text>
</TouchableHighlight>
)
}
现在的问题是如何将数据传递到其他页面