我正在尝试在屏幕之间传递状态。我遵循了Passing parameters to routes我可以从主屏幕转到详细信息屏幕,但是当我尝试从详细屏幕到主屏幕pass state
时,状态无法通过。
我在主屏幕中具有同意按钮,当我单击pass back state
并导航到详细信息屏幕时,check on the button
(到目前为止很好。)>
但是,如果我[详细信息]屏幕上的按钮button is checked
选中了。
uncheck
这是我的主屏幕代码:
and navigate back to Home screen the state is still
这是我的详细屏幕代码:
Try the code from expo
我正在尝试在屏幕之间传递状态。我按照传递参数到路由的说明进行操作,我可以将状态从主屏幕传递到详细信息屏幕,但是当我尝试将状态传递回... ...>
而不是放入构造函数,请尝试将其放入componentDidMount()中。 PFB从expo snaack更新的代码ive。并且我使用了navigation.push来代替navigation.navigate,因为coz push总是在导航器堆栈的顶部进行隐式推送。,
const imageOn = require("./iconCheck.png");
const imageOff = require("./emptyCheck.png");
class HomeScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
agreeState: this.props.navigation.getParam('agreeServiceFromChild'),
};
}
checkStateImage(){
if(this.state.agreeState === undefined){this.setState({agreeState:false},()=>console.log(this.state.agreeState,'agreeState'))}
if(this.state.agreeState === true){return(imageOn)}
if(this.state.agreeState === false){return(imageOff)}
}
render() {
const { navigation } = this.props;
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<CustomCheckBox
onPress={() => this.setState({agreeState: !this.state.agreeState}, ()=> console.log (this.state.agreeState,'agreeState'))}
onPressButton={() =>
this.props.navigation.navigate('Details', {
agreeServiceFromParent:this.state.agreeState,
})
}
source={this.checkStateImage()}
text='agree'
buttonText='go to DetailScreen'
/>
</View>
);
}
}