如何使用wp.data.subscribe
显示/隐藏某个帖子格式(音频,视频和画廊)的块,我测试了此代码,并且在编写帖子内容时以及选择任何其他选项时触发了它,但是它触发了目标块书写时闪烁。
wp.data.subscribe(() => {
var postFormat = wp.data.select('core/editor').getEditedPostAttribute('format');
$('#blockAudio, #blockVideo, #blockGallery').hide();
if( postFormat == 'gallery' ) {
$('#blockGallery').fadeIn();
}
});
最佳答案
wp.data.subscribe
是Redux的store.subscribe
的包装。
从Redux文档:
我的解释:按照设计,wp.data.subscribe
每次在当前状态发生更改时都会被调用。在编辑器中编辑帖子时,状态会更改多次,因此每次都调用一次监听器功能是有意义的。我敢打赌,您应该检查自己的状态的相关部分是否已更改,然后再执行所需的操作。
因此,我认为您可以修改代码,如下所示:
const getPostFormat = () => wp.data.select('core/editor').getEditedPostAttribute('format');
// set the initial postFormat
let postFormat = getPostFormat();
wp.data.subscribe(() => {
// get the current postFormat
const newPostFormat = getPostFormat();
// only do something if postFormat has changed.
if( postFormat !== newPostFormat ) {
// Do whatever you want after postFormat has changed
if (newPostFormat == 'gallery') {
$('#blockAudio, #blockVideo, #blockGallery').hide();
$('#blockGallery').fadeIn();
}
}
// update the postFormat variable.
postFormat = newPostFormat;
});
资料来源:关于javascript - 正确使用wp.data.subscribe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52301472/