【发布时间】:2017-10-26 09:45:22
【问题描述】:
我正在使用反应导航并尝试将参数从第二个屏幕发送到第三个屏幕
第一个屏幕 (App.js)
this.props.navigation.navigate('Index1',{userid1:this.state.studentsS});
第二屏(Index.js)
this.props.navigation.navigate('MyDealOffer',{userid3:this.props.navigation.state.params.userid1});
当我检查 (this.props.navigation.state.params.userid1) 的值时,它的数字正确
第三屏(MyDealOffer.js)
componentDidMount(){
this.setState({
parmstudentid:this.props.navigation.state.params.userid3,
})
var x = this.props.navigation.state.params.userid3;
var url = 'http://***:82/wasily/MyDealOffer.php?
UserID=${this.props.navigation.state.params.userid3}'
fetch(url,
{method:"POST"}).then((response)=>response.json()).then((responseJson)=>{
var ds = new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!=r2});
this.setState({
isLoading:false,
cloneStudent:ds.cloneWithRows(responseJson),
});
})
}
render() {
if(this.state.isLoading){
return(
<View><Text>Wait</Text></View>
)
}
return (
<View style={styles.container}>
<Text>User Details</Text>
<ListView
dataSource={this.state.cloneStudent}
renderRow={(rowData)=>
<Text>Username : {rowData.Price} , User ID:{rowData.Price} </Text>
}/>
</View>
`
输出:“没有任何数据的用户详细信息”
=========================但是====================== 当我在第二个屏幕中更改以下行时
this.props.navigation.navigate('MyDealOffer',{userid3:this.props.navigation.state.params.userid1});
到
this.props.navigation.navigate('MyDealOffer',{userid3:4});
它在第三个屏幕中显示正确的数据
【问题讨论】:
-
您能在第二个屏幕索引中显示您调用
this.props.navigation.navigate('MyDealOffer', {...})的方法吗?不仅是那个方法,还有它是如何被调用的(比如点击按钮)。例如,假设您在方法goToNextScreen()中有它。你有一个带有道具onPress={this.goToNextScreen}的按钮。您需要将其更改为onPress={this.goToNextScreen.bind(this)}或将this.goToNextScreen = this.goToNextScreen.bind(this)放入构造函数中以启用对this的任何值的访问 -
index.js 代码下方 render() { return (
) } handle1Press = ()=> { const x = this.props.navigation.state.params.userid1; this.props.navigation.navigate('MyDealOffer',{userid3:this.props.navigation.state.params.userid1}); }button
标签: react-native navigation react-navigation