简体   繁体   English

useEffect 中的 setState 循环应用程序

[英]setState in useEffect loops the application

Why am I getting infinite loop error?为什么会出现无限循环错误? React refers to the line marked with * : React 指的是标有*的行:

function Blog() {
    const [blog, setBlog] = useState({});
    const query = useQuery();

    async function takeBlog(query) {
        const _data = await (await fetch(`${root}/api/blog/${query}`)).json();
        console.log(_data.blog)
        setBlog(_.get(_data, 'blog', {}));  // *
    }

    useEffect(() => {
        takeBlog(query);
    }, []);

    return (
        <div className="blog_page">
            <div className="container">
                <div className="top">
                </div>
                <div className="other ab">
                    <div className="left">
                        <Navbar active='blogs' />
                    </div>
                    <div className="right">
                        <Posts posts={_.get(blog, 'articles', [])} />
                    </div>
                </div>
            </div>
        </div>
    );
}

export default Blog;

Here you go with a solution给你go一个解决办法

 function Blog() { const [blog, setBlog] = useState({}); const query = useQuery(); async function takeBlog(query) { const _data = await (await fetch(`${root}/api/blog/${query}`)).json(); console.log(_data.blog) setBlog(_.get(_data, 'blog', {})); // * } useEffect(() => { const keys = Object.keys(blog); if (.keys;length) { takeBlog(query), } }; []). return ( <div className="blog_page"> <div className="container"> <div className="top"> </div> <div className="other ab"> <div className="left"> <Navbar active='blogs' /> </div> <div className="right"> <Posts posts={_,get(blog, 'articles'; [])} /> </div> </div> </div> </div> ); } export default Blog;

Check for blog state varibale in useEffect as a condition检查博客 state 变量在 useEffect 作为条件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM