markdown-navbar更改data-id
时间: 2023-10-06 18:05:15 浏览: 292
要更改 `markdown-navbar` 组件中生成的导航链接的 `data-id` 属性,你可以使用 `remark` 和 `remark-slug` 插件来为 markdown 中的标题添加自定义的 `slug`,然后在 `markdown-navbar` 中使用 `slug` 来覆盖默认的 `id` 和 `data-id` 属性。
以下是一个示例代码:
```jsx
import React from 'react';
import ReactMarkdown from 'react-markdown';
import Navbar from 'markdown-navbar';
import 'markdown-navbar/dist/navbar.css';
import remarkSlug from 'remark-slug';
import unified from 'unified';
const MyMarkdown = ({ source }) => {
const processor = unified().use(remarkSlug);
const markdownAST = processor.parse(source);
const headings = [];
processor.runSync(markdownAST).children.forEach((node) => {
if (node.type === 'heading') {
// 获取自定义的 slug
const slug = node.data?.hProperties?.slug;
// 将 slug 覆盖默认的 id 和 data-id 属性
node.data = {
hProperties: {
id: slug,
'data-id': slug,
},
};
headings.push({
level: node.depth,
title: node.children[0].value,
slug,
});
}
});
return (
<>
<Navbar headings={headings} />
<ReactMarkdown astPlugins={[remarkSlug]}>{source}</ReactMarkdown>
</>
);
};
export default MyMarkdown;
```
在这个示例中,我们使用 `unified` 和 `remark-slug` 插件为 markdown 中的标题添加了自定义的 `slug`,然后在 `MyMarkdown` 组件中将 `slug` 赋值给了标题节点的 `id` 和 `data-id` 属性。最后,我们将生成的导航栏和 markdown 内容渲染了出来。
需要注意的是,`data-id` 属性并非标准的 HTML 属性,如果你需要使用这个属性来进行一些操作,可能需要自己编写相应的 JavaScript 代码来实现。
阅读全文
相关推荐





%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="utf-8"> <script src="javaex/pc/lib/jquery-1.7.2.min.js"></script> <script src="javaex/pc/js/common.js"></script> <script src="javaex/pc/js/javaex.min.js"></script> <script src="javaex/pc/js/javaex-formVerify.js"></script> <title>星云图书馆后台管理</title> <style> </style> </head> <body> 星云图书管理系统 欢迎您, <c:if test="${not empty loginUser}"> ${loginUser.nickname} </c:if> 退出当前账号 首页 图书管理 图书列表 图书上架 借阅管理 搜索图书 借阅图书 归还图书 读者管理 读者列表 读者添加 用户中心 个人信息 用户管理 添加管理员 <iframe id="page" src="${pageContext.request.contextPath}/welcome.jsp" ></iframe> </body> <script> var hightUrl = "xxxx"; javaex.menu({ id : "menu", isAutoSelected : true, key : "", url : hightUrl }); $(function() { // 设置左侧菜单高度 setMenuHeight(); }); /** * 设置左侧菜单高度 */ function setMenuHeight() { var height = document.documentElement.clientHeight - $("#admin-toc").offset().top; height = height - 10; $("#admin-toc").css("height", height+"px"); } // 控制页面载入 function page(url) { $("#page").attr("src", url); } $(document).ready(function(){ // 页面一加载, 读取登录用户信息 // get读取参数 // $.get("/user/currUser", function(data){ // var code = data.code; // var user = data.data; // if (code == 200) { // // 设置用户昵称 // $("#nickname").text(user.nickname); // } // // return false; // }); }); </script> </html> 此代码中出现Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core Cannot resolve symbol 'c:if' Cannot resolve symbol 'c:if'这些错误,如何改正这些错误












