在docusaurus文档中,导航栏项目只能有某些类型,如链接、下拉和搜索。我如何添加自定义按钮,就像我想添加登录按钮一样?
kuhbmx9i1#
这实际上取决于您希望从添加到导航栏的项目中看到的功能类型,但开发模式在不同的实现中应该是相似的。如果您试图在用户单击自定义按钮时触发类似登录模态的事件,则可以在docusaurus.config.js中指定以下内容:
docusaurus.config.js
module.exports = { themeConfig: { navbar: { items: [ { href: '#login', label: 'Login' } ] } }, scripts: [ 'https://yourdomain.com/customscript.js' ] };
然后,在脚本customscript.js中,可以包含以下内容:
customscript.js
document.querySelector('[href="#login"]') .addEventListener('click', () => { console.log('Login button clicked.'); });
Docusaurus要求在每个导航栏项上指定href或to,这就是为什么我选择了这个奇怪的选择器,但是如果你愿意,你也可以在项上指定className,然后也用它作为选择器。如果你希望项不是链接,你可以在自定义脚本中设置outerHTML或使用replaceWith()。请记住,根据站点路由的配置方式,如果React将链接节点重新写入DOM,则可能需要重新应用自定义脚本中的逻辑。据我所知,目前还没有一个完美的方法来实现这一点,但v2也仍在开发中,所以插件的暴露是越来越好的每一个版本。
href
to
className
outerHTML
replaceWith()
ffx8fchx2#
临时变通办法效果良好https://github.com/facebook/docusaurus/issues/7227
2条答案
按热度按时间kuhbmx9i1#
这实际上取决于您希望从添加到导航栏的项目中看到的功能类型,但开发模式在不同的实现中应该是相似的。
如果您试图在用户单击自定义按钮时触发类似登录模态的事件,则可以在
docusaurus.config.js
中指定以下内容:然后,在脚本
customscript.js
中,可以包含以下内容:Docusaurus要求在每个导航栏项上指定
href
或to
,这就是为什么我选择了这个奇怪的选择器,但是如果你愿意,你也可以在项上指定className
,然后也用它作为选择器。如果你希望项不是链接,你可以在自定义脚本中设置outerHTML
或使用replaceWith()
。请记住,根据站点路由的配置方式,如果React将链接节点重新写入DOM,则可能需要重新应用自定义脚本中的逻辑。
据我所知,目前还没有一个完美的方法来实现这一点,但v2也仍在开发中,所以插件的暴露是越来越好的每一个版本。
ffx8fchx2#
临时变通办法效果良好
https://github.com/facebook/docusaurus/issues/7227