获取wp数据选择器的加载状态

时间:2019-08-08 作者:Ahrengot

我有一个自定义块,显示为当前帖子指定的分类术语。我试图在后台加载这些术语时显示加载微调器。

假设我有一个自定义分类的选择器,看起来像这样:

const { withSelect } = wp.data;

const MyComponent = withSelect(select => {
  return {
    terms: select(\'core\').getEntityRecords("taxonomy", "my_taxonomy", {
      _fields: \'id,name,slug\'
    }),
  }
})(props => {
  console.log("taxonomies: ", props.terms);
  return (
    <ul>
      {props.terms.map(t => (
        <li key={term.id}>{term.name}</li>
      ))}
    </ul>
  );
});
当编辑器加载并通过一些AJAX获取分类术语时,调用props.terms 在此期间,值更改为以下值

首字母:道具。条款=[]null[term1, term2, ...]props.terms === null 我可以假设这些术语正在加载,但我更喜欢从存储区加载某种状态。这可能吗?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

是的,这是可能的,你会使用wp.data.select( \'core/data\' ).isResolving().

基于代码的示例:

const MyComponent = withSelect(select => {
  const { isResolving } = select( \'core/data\' );
  const query = { _fields: \'id,name,slug\' };
  return {
    terms: select(\'core\').getEntityRecords("taxonomy", "my_taxonomy", query),
    isRequesting: isResolving( \'core\', \'getEntityRecords\', [ \'taxonomy\', \'my_taxonomy\', query ] )
  };
})(props => {
  if ( props.isRequesting ) {
    return (
      <div className="loading">
        Loading...
      </div>
    );
  }
  return (
    <ul>
      { props.terms.map( term => (<li key={ term.id }>{ term.name }</li>) ) }
    </ul>
  );
});
你也可以检查一下the "edit" component 对于“类别”块。

相关推荐

由于出现javascript MIME类型错误,无法加载脚本

我正在尝试让jQuery砌体插件在站点上运行。我已经更新了模板文件,以获得插件需要的适当类。然后我将脚本按如下方式排队:function masonry_scripts() { wp_enqueue_script(\'masonry\'); wp_enqueue_script( \'masonry-script\', get_template_directory_uri() . \'/assets/js/masonry-script.js\', array(), false