|
// 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 :/")); |
|
} |
|
|