t_wの輪郭

Feedlyでフォローするボタン
react-router-dom

Link

2023/4/2 8:27:00
Amplifyの<Link>からreact-router-domの<Link>に切り替えたら画面遷移が速くなったuseEffectの第二引数をうまく使うとよろしい

うまくいったコード

const [post, set_post] = useState<Post | undefined>(undefined);
useEffect(() => {
    if (post==undefined && post_id) {
        (async () => {
            const post_db = (await API.graphql({
                query: getPost,
                variables: { id: post_id },
                authMode: "API_KEY",
                authToken: awsExports.aws_appsync_apiKey
            }) as GraphQLResult<GetPostQuery>).data?.getPost;
            if (post_db) {
                set_post(post_db)
            }
            console.log({ post_db });
        })();
    }
}, [post_id]);

うまくいかなかったコード(<Link>でDBが読み込まれなくなった・post==undefinedを外すと無限ループ)

const [post, set_post] = useState<Post | undefined>(undefined);
if (post==undefined && post_id) {
    (async () => {
        const post_db = (await API.graphql({
            query: getPost,
            variables: { id: post_id },
            authMode: "API_KEY",
            authToken: awsExports.aws_appsync_apiKey
        }) as GraphQLResult<GetPostQuery>).data?.getPost;
        if (post_db) {
            set_post(post_db)
        }
        console.log({ post_db });
    })();
}

参考にした