自定义我们的标题】【react+mardown实现自定义我们的标题】

简介: 自定义我们的标题】【react+mardown实现自定义我们的标题】

正文


简介主要实现的是根据我们的md的内容,来实现我们的左侧的标题的内容,我们一起看一下吧。


一、背景介绍#


当前,我们的文章采用的是markdown编辑的,今天我想实现根据我们的h1-h6不同的标题,实现我们的左侧的标题。


二、实现的思路#


将我们的左侧的标题存储在我们的store里面。之后,直接运行我们的组件,展示我们的标题。


三、具体的实现的代码#


在我们解析标题的时候,动态的增加我们的标题的内容:


const _state=store.getState();
      let articleTitles=_state.articleTitles;
      articleTitles.push({title:nodeValue,level:level});
      store.setState({
        articleTitles:articleTitles
      })


在我们的左侧组件里面实现我们的业务逻辑:


class LeftArticleTitle extends React.Component{
    // 构造方法
    constructor(props){
        super(props)
        this.state={
            articleTitles:[]
        }
    }
    componentDidMount(){
        let articleTitles=this.props.articleTitles;
        this.setState({
            articleTitles:articleTitles
        })
    }
    render(){
        let dataList=this.state.articleTitles;
        //var dataList = [];//需要去重复的集合
        var res = [];//去重复后的集合
        var tem = {};
         for(var i = 0; i < dataList.length; i++){
            let key=tem[dataList[i].title];
            if(key==null||undefined==key){
                res.push(dataList[i]);
                tem[dataList[i].title]=1;
            }
        }
        //console.log(articleTitles)
        return(
            <div>
                <Card
                title={"文章目录"}
                className="left-article-title-parent"
                >
                    {
                        res.map((item,index)=>{
                            return(
                                <span>
                                {/* <Tag color={(index<=2)?"#FF4040":"#ABABAB"}>{index+1}</Tag> */}
                                    <div className="left-titles-item-a"
                                    keyvalue={item.title}
                                    >
                                        <a
                                        // href="javaScript:void(0);"
                                        href={`#${item.title}`}
                                        keyvalue={item.title}
                                        style={{color:"black"}}
                                        >
                                            {item.title}
                                        </a>
                                    </div>
                                </span>
                            )
                        })
                    }
                </Card>
            </div>
        )
    }
}
const mapStateToProps = (state, ownProps) => {
    //console.log("mapStateToProps",state)
    return { articleTitles: state.articleTitles }
}
export default connect(mapStateToProps)(LeftArticleTitle)


这样,我们就实现了我们的左侧的标题的动态的展示 看一下效果:


21.jpg

相关文章
|
21天前
|
前端开发 JavaScript 定位技术
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
35 0
|
21天前
|
前端开发 JavaScript CDN
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏(一)
前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏
51 0
|
6月前
|
自然语言处理 前端开发 JavaScript
美丽的公主和它的27个React 自定义 Hook(四)
美丽的公主和它的27个React 自定义 Hook(四)
|
6月前
|
存储 前端开发 数据可视化
美丽的公主和它的27个React 自定义 Hook(三)
美丽的公主和它的27个React 自定义 Hook(三)
|
6月前
|
存储 JSON 前端开发
美丽的公主和它的27个React 自定义 Hook(二)
美丽的公主和它的27个React 自定义 Hook(二)
|
6月前
|
前端开发 JavaScript API
美丽的公主和它的27个React 自定义 Hook(一)
美丽的公主和它的27个React 自定义 Hook(一)
|
10月前
|
前端开发
react是否支持给标签设置自定义的属性,比如给video标签设置webkit-playsinline?
react是否支持给标签设置自定义的属性,比如给video标签设置webkit-playsinline?
119 0
|
10月前
|
存储 前端开发 JavaScript
React自定义Hooks
React自定义Hooks是一项强大而实用的功能,它可以帮助开发者将逻辑和状态从组件中抽离出来,提高组件的可复用性和逻辑抽象能力。本论文将介绍React自定义Hooks的定义、使用方法和设计原则,分析其对函数式组件的优化作用,并通过实例演示了如何使用自定义Hooks提高组件性能、重用逻辑和实现逻辑的解耦。
302 2
|
11月前
|
缓存 前端开发 JavaScript
react之自定义hooks
任何相对独立、复用性强的逻辑,都可以 extract 为自定义 Hook,自定义 Hook 是一种复用 React 的状态逻辑的函数。
146 0
|
12月前
|
缓存 前端开发 JavaScript