我有2个屏幕:
我的进入点是我的主屏幕,如果我已登录(获取数据),请先注销,然后再登录到另一个帐户。由于已经安装了Home组件,因此不会更新我的数据,并且不会再次调用this.getDatas()。我找不到解决方案,我想我需要在Home.js中使用“ ComponentWillUpdate”来调用this.getDatas()或类似的方法,但是您找不到解决方案。
这是我的代码:
Home.js
python -m rasa_core.run -d models/dialogue -u models/nlu/current --port 5002 --credentials credentials.yml
Login.js
componentDidMount = async () => {
const { navigation } = this.props;
if (!await AsyncStorage.getItem('auth')) {
navigation.navigate('Login');
} else {
this.getDatas();
}
}
getDatas() {
axios.get(`${apiUrl}/me`).then((res) => {
this.setState({
datas: res.data.datas,
});
}).catch((err) => {
console.warn(err);
});
}
App.js
export default class Login extends Component {
constructor(props) {
super(props);
this.state = {
email: null,
password: null,
};
}
logIn() {
const { email, password } = this.state;
axios.post(`${apiUrl}/auth`, {
email,
password
}).then((res) => {
navigation.navigate('Home');
}).catch((err) => {
console.warn('Error:', err);
});
}
}
有什么想法吗?
答案 0 :(得分:0)
对于应用程序中的身份验证流程,应考虑使用react-navigation
中的 Switch Navigator 。因此,一旦您退出应用程序并登录后,应用程序屏幕就会弹出内存,因此当您重新登录时,componentDidmount
将再次被触发。