Skip to content

Instantly share code, notes, and snippets.

@Gustavo-Kuze
Last active July 23, 2019 11:32
Show Gist options
  • Save Gustavo-Kuze/455e371085d27477ae9b04fbd41d5385 to your computer and use it in GitHub Desktop.
Save Gustavo-Kuze/455e371085d27477ae9b04fbd41d5385 to your computer and use it in GitHub Desktop.
Instalando React Navigation no InstaluraMobile
// 1- yarn add react-navigation
// 2- yarn add react-navigation
// 3- Criar um container component, eu utilizei o App.js
import {createStackNavigator, createAppContainer} from 'react-navigation';
import Feed from "./src/screens/Feed";
import Login from "./src/screens/Login";
const MainNavigator = createStackNavigator({
Login: {screen: Login},
Feed: {screen: Feed},
});
const App = createAppContainer(MainNavigator);
export default App;
//========
// 4- Na tela de login, após pegar o token, passar o token em props
// para a tela de Feed usando a função this.props.navigation.navigate(tela, obj);
//
login = () => {
const requestInfo = {
method: "POST",
body: JSON.stringify({
login: this.state.usuario,
senha: this.state.senha
}),
headers: {
"Content-type": "application/json"
}
};
fetch("https://instalura-api.herokuapp.com/api/public/login", requestInfo)
.then(response => {
if (response.ok) {
return response.text();
}
throw new Error("Não foi possível efetuar login");
})
.then(token => {
AsyncStorage.setItem("token", token);
AsyncStorage.setItem("usuario", this.state.usuario);
// aqui
this.props.navigation.navigate("Feed", { token });
return AsyncStorage.getItem("token");
})
.catch(err => {
this.setState({ ...this.state, message: err.message });
});
};
// -----------
// 5- No Feed, solicitar o token com a função
// this.props.navigation.getParam(nomeProp, valorPadrao);
componentDidMount() {
fetch("https://instalura-api.herokuapp.com/api/public/fotos/rafael")
.then(data => data.json())
.then(fotos => {
this.setState({ ...this.state, fotos });
});
// aqui
console.warn(this.props.navigation.getParam("token", "token não encontrado :/"));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment