lau*_*ent 3 react-native react-navigation
我有屏幕1,可以使用以下命令从屏幕1导航到屏幕2:
navigation.navigate('Screen2')
Run Code Online (Sandbox Code Playgroud)
在此屏幕上,我想转到上一个屏幕,它很简单:
navigation.goBack()
Run Code Online (Sandbox Code Playgroud)
但是我想知道如何将一些数据传回Screen1?诸如此类的东西行不通,navigation.goBack({ myData: 'something' })所以我想知道一般建议使用哪种方法?
您可以通过2种方法解决它:
1:使用导航方法
通过导航调用该屏幕时传递一种方法:
this.props.navigation.navigate('Screen2', {
onGoBack: this.refresh,
});
refresh=(data)=> {
}
Run Code Online (Sandbox Code Playgroud)
当您按回去时,像
this.props.navigation.state.params.onGoBack('123');
this.props.navigation.goBack();
Run Code Online (Sandbox Code Playgroud)
2:使用redux存储
如果您在应用程序中使用redux,则只要用户按下后退按钮就可以更新redux存储,并在上一屏幕中获取存储值。
小智 5
您可以像这样传递回调(onSelect):
// SCREEN 1
import React from "react";
import { Button, Text, View } from "react-native";
class Screen1 extends React.Component {
state = { selected: false };
onSelect = data => {
this.setState(data);
};
onPress = () => {
this.props.navigate("Screen2", { onSelect: this.onSelect });
};
render() {
return (
<View>
<Text>{this.state.selected ? "Selected" : "Not Selected"}</Text>
<Button title="Next" onPress={this.onPress} />
</View>
);
}
}
// SCREEN 2
import React from "react";
import { Button } from "react-native";
class Screen2 extends React.Component {
goBack() {
const { navigation } = this.props;
navigation.goBack();
navigation.state.params.onSelect({ selected: true });
}
render() {
return <Button title="back" onPress={this.goBack} />;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |