当前位置:网站首页>Antd Comment 递归循环评论
Antd Comment 递归循环评论
2022-07-06 21:09:00 【拾忆@y】
一、业务场景:
最近在使用umi和Antd 进行开发,其中在做多级嵌套评论的时候遇到了一些坑,为了大家后面遇到和我一样的问题,给大家分享一下
加粗样式二、解决方案:
先定义函数组件,返回要渲染的页面结构。再书写主函数,写一个递归调用组件的方法,并对之前的函数组件进行循环遍历,通过判断多次调用,最后返回递归组件渲染到页面上
三、具体实现步骤
1、定义函数组件,返回要渲染的页面结构
import { ReactElement, useCallback } from 'react';
import { Avatar, Comment } from 'antd';
const ExampleComment = (props) => {
console.log(props)
const { children, _node: { name } } = props;
return <Comment actions={[<span key="comment-nested-reply-to">Reply to</span>]}
author={
<a>Han Solo</a>}
avatar={
<Avatar src="https://joeschmoe.io/api/v1/random" alt="Han Solo" />}
content={
<p>
{name}
</p>
}
>
{children}
</Comment>
};
2、书写主函数,写一个递归调用组件的方法,并对之前的函数组件进行循环遍历,通过判断多次调用,最后返回递归组件渲染到页面上
function notificationrecord(): ReactElement {
const renderTreeNodes = useCallback(
(node): ReactElement[] => {
if (!node) return [];
return node.map((_node) => (
<ExampleComment key={_node.id} _node={_node}>
{renderTreeNodes(_node.children)}
</ExampleComment>
));
},
[],
);
return (
<>
{
renderTreeNodes(data)
}
</>
);
}
export default notificationrecord;
3、完整代码如下
import { ReactElement, useCallback } from 'react';
import { Avatar, Comment } from 'antd';
const ExampleComment = (props) => {
console.log(props)
const { children, _node: { name } } = props;
return <Comment actions={[<span key="comment-nested-reply-to">Reply to</span>]}
author={
<a>Han Solo</a>}
avatar={
<Avatar src="https://joeschmoe.io/api/v1/random" alt="Han Solo" />}
content={
<p>
{name}
</p>
}
>
{children}
</Comment>
};
function notificationrecord(): ReactElement {
const data = [
{
id: 1,
name: '我是个笨蛋,大写的',
children: [
{
id: 11,
name: '我是个笨蛋,大写的',
children: [{
id: 111,
name: '我是个笨蛋,大写的',
}]
},
{
id: 12,
name: '我是个笨蛋,大写的',
children: [{
id: 121,
name: '我是个笨蛋,大写的',
}]
},
]
},
{
id: 12,
name: '我是个笨蛋,大写的',
children: [
{
id: 121,
name: '我是个笨蛋,大写的',
children: [{
id: 1211,
name: '我是个笨蛋,大写的',
}]
},
{
id: 212,
name: '我是个笨蛋,大写的',
children: [{
id: 1221,
name: '我是个笨蛋,大写的',
}]
},
]
}
]
const renderTreeNodes = useCallback(
(node): ReactElement[] => {
if (!node) return [];
return node.map((_node) => (
<ExampleComment key={_node.id} _node={_node}>
{renderTreeNodes(_node.children)}
</ExampleComment>
));
},
[],
);
return (
<>
{
renderTreeNodes(data)
}
</>
);
}
export default notificationrecord;
四、效果展示
今天的分享到此结束,欢迎小伙伴们一起交流
边栏推荐
- QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
- 浅谈网络安全之文件上传
- MySQL的索引
- 再AD 的 界面顶部(菜单栏)创建常用的快捷图标
- 复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
- PIP download only, not install
- 什么是 BA ?BA怎么样?BA和BI是什么关系?
- Lab1 configuration script
- Function reentry, function overloading and function rewriting are understood by yourself
- About Tolerance Intervals
猜你喜欢
22. (ArcGIS API for JS) ArcGIS API for JS Circle Collection (sketchviewmodel)
【安全攻防】序列化與反序列,你了解多少?
Kotlin Android environment construction
AVL树插入操作与验证操作的简单实现
运算放大器应用汇总1
How to detect whether the MySQL code runs deadlock +binlog view
Ubuntu20 installation redisjson record
Construction of Hisilicon universal platform: color space conversion YUV2RGB
Open3D 网格滤波
map和set的实现
随机推荐
Hisilicon 3559 universal platform construction: RTSP real-time playback support
Principle of attention mechanism
Cryptography series: detailed explanation of online certificate status protocol OCSP
Open3D 网格滤波
Docker部署Mysql8的实现步骤
HW-小记(二)
How to customize the shortcut key for latex to stop running
Set static IP for raspberry pie
19. (ArcGIS API for JS) ArcGIS API for JS line acquisition (sketchviewmodel)
链表面试常见题
海思万能平台搭建:颜色空间转换YUV2RGB
OSCP工具之一: dirsearch用法大全
AVL树插入操作与验证操作的简单实现
再AD 的 界面顶部(菜单栏)创建常用的快捷图标
Free PHP online decryption tool source code v1.2
QT item table new column name setting requirement exercise (find the number and maximum value of the array disappear)
Kotlin Android 环境搭建
运算放大器应用汇总1
Flutter3.0, the applet is not only run across mobile applications
Set WiFi automatic connection for raspberry pie