我需要担心useState导致重新呈现吗?

时间:2020-12-16 作者:philolegein

我正在创建一个新的块插件,我担心它edit 函数被调用的次数太多。我不确定这是不是正确的术语,因为我对JavaScript、React等都是新手。。。,但是,看起来useState 导致重新渲染。如果我有一个非常简单的edit:

import { useState } from \'@wordpress/element\';

export default function MyEdit( props ) {
        const {
                attributes: {
                    anAttribute
                },
                setAttributes,
        } = props;

        const [ isValidating, setIsValidating ] = useState( false );
        const post_id = wp.data.select("core/editor").getCurrentPostId();
        console.log(\'Post ID is \', post_id);

        const MyPlaceholder = () => {
            return(
                <div>this is a test</div>
            );
        };

        const Component = MyPlaceholder;

        return <Component />;
}
那么console.log 每篇文章/页面上的区块都会被点击两次。我不想过度优化,但同样,我也不知道这意味着什么(页面上的每个脚本都会被重新执行两次吗?)。这是预期的行为useState? 我做错什么了吗?我必须担心吗(从速度的角度来看,从潜在的比赛条件来看,一切都被多次重新渲染)?

1 个回复
SO网友:philolegein

我想这是意料之中的行为。如果我添加一个类似的console.log 到使用useState, 我得到了同样的效果。WordPress似乎与use strict, 根据this answer, React double在strict模式下调用许多内容。