您好,我在使用 Zendesk 插件的“在 Zendesk 上查看”按钮行为时遇到问题。当 Zendesk 中已存在工单时,该按钮会正确显示为“在 Zendesk 上查看”。但是,如果我导航到一个没有相应 Zendesk 工单的不同主题,该按钮最初仍显示为“在 Zendesk 上查看”,而不是“创建 Zendesk 工单”。刷新页面后,按钮会更新以显示正确的“创建 Zendesk 工单”选项。
似乎该按钮组件在导航到新主题时没有重新渲染。我认为解决方案可能涉及在页面更改时触发此组件的重新渲染。
有人能就如何最好地解决这个问题提出建议吗?或者是否有办法在导航时强制组件正确更新?任何见解或建议都将不胜感激。
您好!
希望您一切安好!我想跟进一下,看看这个问题是否有任何更新。您的见解或指导将不胜感激。
提前致谢!
MihirR
(Mihir)
3
这可能是因为它没有检测到页面更改。这很可能是由于前端框架(可能是 Ember.js,因为 Discourse 使用它)在导航期间处理组件渲染的方式。
您可以添加一个路由更改的监听器,类似这样:
export default Component.extend({
router: service(),
didInsertElement() {
this._super(...arguments);
this.router.on('routeDidChange', () => {
this.refreshZendeskButton();
});
},
willDestroyElement() {
this._super(...arguments);
this.router.off('routeDidChange', this.refreshZendeskButton);
},
});
这可能需要修改,因为它使用了 setupComponent():
检查是否存在有效的 zendesk 工单使用了 zendesk_id。也许它需要一个 api.onPageChange()?