環境
AWS Linux AMI
"aws-amplify": "^1.1.29"
"aws-amplify-react": "^2.3.9"
"react": "^16.8.6"
実現したい事
AWS cognito withAuthenticatorを使用した際、ログインされた時に関数を起動させたい
(contextAPIでlogin状態が変更されたことを他componentに送るため)
コード
▼Main.tsx
import React from 'react'; import { BrowserRouter as Router, Route } from "react-router-dom"; import Login from './Login'; import Mypage from './mypage/Index'; import Menu from './Menu'; import Hoge from './Hoge'; class Main extends React.Component { render(){ return ( <div className="Main"> <Router> <Menu /> //*mypageはログインした人しか見れないようにしたい <Route exact path="/mypage" component={Mypage} /> <Route path="/main" component={Hoge} /> </Router> </div> ); } } export default Main;
▼mypage.tsx
import React from 'react'; import { RouteComponentProps, Link } from 'react-router-dom'; import { withAuthenticator } from 'aws-amplify-react'; import Auth from '@aws-amplify/auth'; import AuthContext from '../context/auth-context'; interface MatchParams { id: number; } interface State { user: '', } class Mypage extends React.Component<RouteComponentProps<MatchParams>, State> { constructor(props: RouteComponentProps) { super(props); this.state = { user: '' }; } async componentDidMount() { let user = await Auth.currentAuthenticatedUser() this.setState({user: user.username}); } //**ここに下記のように「ログイン後に起動される関数」があるイメージ //loggedIn() { // console.log("logged in!"); //} render() { return ( <div className="mypage"> <h1>mypage</h1> <div> <ul> <li><Link to='mypage'>my page</Link></li> </ul> </div> </div> ); } } export default withAuthenticator(Mypage);
ドキュメントにはSignIn()関数の説明はありますが、ログインされた時に呼び出される関数などの記載はなかったので、こちらに質問致しました。
あなたの回答
tips
プレビュー