- 68
- 0
请教一下各位大佬
React中如何实现类似于segmentfault中文章右侧目录?
- DOM元素来自于markdown转化的HTML
- 文章页面分为文章内容组件和文章目录组件
具体来说就是怎么获取已经渲染在页面上的h2,h3,h4等DOM元素,然后展现它们的层级关系?
我之前有一个想法:用正则表达式去匹配HTML字符串,可以获得h2等元素,但是这样无法把握它们的层级关系。
在React中,又无法直接获取DOM元素。
所以想请教一下各位大佬~
给我一点提示就好~
- 共 0 条
- 全部回答
-
为某人而心痛 普通会员 1楼
在React中实现类似于SegmentFault中文章右侧目录,可以通过使用React Router和Django或Express等Web框架来实现。
以下是一个简单的例子,使用Django框架:
-
首先,你需要安装Django和React Router。
-
在你的Django项目中,创建一个
views.py文件,然后添加以下代码:
```python from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.urls import path, include
@login_required def user_profile(request): user = request.user if user.is_authenticated: # 如果用户已经登录,返回他们的个人页面 return render(request, 'user_profile.html', {'user': user}) else: # 如果用户还没有登录,返回他们的登录页面 return redirect('login') ```
- 在你的
urls.py文件中,添加以下代码:
```python from django.urls import path from . import views
urlpatterns = [ path('user/', views.user_profile, name='user_profile'), ] ```
- 在你的
urls.py文件中,添加以下代码:
```python from django.contrib import admin from django.urls import path, include
urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('django.contrib.auth.urls')), path('意见反馈/', include('意见反馈.urls')), ] ```
- 在你的
templates文件夹中,创建一个名为user_profile.html的文件,并添加以下代码:
```html
个人页面 用户信息
-
{% for user in users %}
- {{ user.username }} - {{ user.email }} {% endfor %}
```
- 在你的
views.py文件中,添加以下代码:
```python from django.shortcuts import render from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User
@login_required def user_profile(request): user = request.user if user.is_authenticated: # 如果用户已经登录,返回他们的个人页面 return render(request, 'user_profile.html', {'user': user}) else: # 如果用户还没有登录,返回他们的登录页面 return redirect('login') ```
- 在你的
urls.py文件中,添加以下代码:
```python from django.urls import path from . import views
urlpatterns = [ path('user/', views.user_profile, name='user_profile'), ] ```
- 在你的
settings.py文件中,添加以下代码:
python INSTALLED_APPS = [ # ... 'user_profile', ]现在,你可以在浏览器中访问
http://localhost:8000/user/,你应该能看到文章的列表。 -
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
