具有异步调用的自定义存储

时间:2019-06-20 19:55:15

标签: wordpress-gutenberg

我正在尝试提取所选父页面的子页面列表。我按照示例创建了自己的商店(https://developer.wordpress.org/block-editor/packages/packages-data/) 我现在有一家商店处于“子级”状态,其中包含一系列帖子,这些帖子都是所选父级的所有子级。在加载时效果很好,但是如果以后再更改父级,异步api调用将不会总是触发。我知道我们不想提出大量的获取请求,但是当父级更改时,我需要拉出新的子级页面。我以为也许在“父”属性更改时需要分派“ getChildren”操作,但这也不总是触发api调用。

也许自定义商店不是前进的正确路径?感谢您的帮助或重定向。

存储功能:

const actions = {
  getChildren(parent) {
    return {
      type: 'GET_CHILDREN',
      parent
    }
  },
  setChildren(children) {
    return {
      type: 'GET_CHILDREN',
      children
    }
  }
}
registerStore('my/store', {
  reducer(state = { children: '' }, action) {
    switch (action.type) {
      case 'SET_CHILDREN':
        return {
          ...state,
          children: action.children
        }
      default:
        return state
    }
  }
  actions: actions,
  selectors: {
    getChildren(state) {
      const { children } = state
      return children
    }
  },
  controls: {
    GET_CHILDREN(action) {
      return apiFetch({ path: `custom_api_point?parent=${action.parent}` })
    }
  },
  resolvers: {
    * getChildren(parent) {
      const children = yield actions.getChildren(parent)
      return actions.setChildren(children)
    }
  }
})

我的方块的编辑功能的相关部分:

...
edit: compose(
  withSelect((select, ownProps) => {
    return {
      children: select('my/store').getChildren(ownProps.attributes.parent)
    }
  })
)(props => {
...

0 个答案:

没有答案