【发布时间】:2020-12-23 09:42:32
【问题描述】:
注意:我在 wordpress.stackexchange 上问过这个问题,但那里没有得到任何回应,所以在这里尝试。
我不确定这是 WordPress 特有的,WordPress 的重载 React 特有的,还是仅仅是 React,但我正在为 WordPress 创建一个新的块插件,如果我在其 edit 函数中使用 useState,即使我从未调用 setter 函数,页面也会重新呈现。
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 />;
}
如果我注释掉const [ isValidating, setIsValidating ] = useState( false );,那么console.log 会发生一次。如果我把它留在里面,它会发生两次;即使我从不检查isValidating 的值,也不要介意打电话给setIsValidating。我不想过度优化事物,但同样,如果我在页面上使用此块 n 次,则该页面将呈现 2n 次。它只是在管理方面,因为它在edit 中,所以也许没什么大不了的,但是......它似乎不对。这是useState 的预期行为吗?难道我做错了什么?我是否需要担心(从速度的角度,从潜在的竞争条件,因为一切都重新渲染多次)?
【问题讨论】:
-
如果你得到答案,请接受
-
现在就在玩你的答案——一旦我确认它有效,我肯定会接受!
-
肯定感谢更新,请告诉我,以便我能提供更多帮助
标签: reactjs wordpress use-state wordpress-gutenberg