wp.api.collections.Posts не является конструктором при разработке блоков Гутенберга. - PullRequest
0 голосов
/ 02 октября 2019

Я разрабатываю блок Гутенберга для получения сообщений из API WP REST с использованием wp.api.collections.

Однако при вызове new wp.api.collections.Posts() я получаю следующую консольную ошибку:

TypeError: wp.api.collections.Posts не является конструктором

Мой код выглядит следующим образом:

  constructor() {
    super(...arguments);
    this.state = this.constructor.getInitialState(
      this.props.attributes.selectedPost
    );
    //Binding
    this.getOptions = this.getOptions.bind(this);
    //Load the posts
    this.getOptions();

    this.onChangeSelectPost = this.onChangeSelectPost.bind(this);
  }

  getOptions() {
    return ( new wp.api.collections.Posts() ).fetch().then(posts => {
      if (posts && 0 !== this.state.selectedPost) {
        //If we have a selected post, find that post and return it
        const post = posts.find(item => {
          return item.id == this.state.selectedPost;
        });
        this.setState({ post, posts });
      } else {
        this.setState({ posts });
      }
    });
  }

При доступе к wp.api.collections на консоли,коллекция Posts() не появляется.

Следует отметить, что при регистрации скрипта редактора wp-api зарегистрирован как зависимость.

Похоже, что новыйКоллекции collection.Posts () происходит до того, как обещание API будет возвращено. При этом я не на 100% уверен, что это так, или, если это так, что делать, чтобы решить проблему. Из документов WordPress я не вижу никаких дополнительных шагов, которые необходимо включить, но я никогда раньше не работал с BackboneJS, поэтому мне интересно, есть ли здесь что-то, что нужно сделать.

...