react中實現(xiàn)搜索結(jié)果中關(guān)鍵詞高亮顯示
網(wǎng)上看到很多js實現(xiàn)的關(guān)鍵詞高亮顯示,方法都是一個道理,先獲取要替換的文字區(qū)域,然后在用正則匹配到關(guān)鍵詞,并進行替換。
react中實現(xiàn)起來似乎更簡單一些。
我這里的需求是通過搜索框搜索出新聞列表,在已經(jīng)獲取到新聞列表數(shù)據(jù)中使用filter函數(shù),獲取到每一個新聞的title,并定義關(guān)鍵詞正則,返回替換后的樣式,react不能直接解析帶html標(biāo)簽的字符串,方法如下:
render() { const newsList=this.state.newsList; if(this.props.type==='tag'||this.props.type==='search'){ let keyword=this.props.id; //這里是父組件傳過來的關(guān)鍵詞 newsList.filter((value,index) => { //使用filter函數(shù)過濾新聞列表數(shù)據(jù) var re =new RegExp(keyword,"g"); //定義正則 value.title=value.title.replace(re, `<span class="keyword">${keyword}</span>`); //進行替換,并定義高亮的樣式 }) } return ( <div> {newsList.map((value,index) => { return (<NewsListItem news={value} key={index} />) //把新聞傳遞給新聞列表的單個新聞組件 }) } <div className="btn-more transition" onClick={this.fetchMoreList}>{this.state.loadingText}</div> </div> ); }
NewsListItem組件渲染title:
<div className="item-title" dangerouslySetInnerHTML = {{ __html:news.title }}></div>
總結(jié)
以上所述是小編給大家介紹的react中實現(xiàn)搜索結(jié)果中關(guān)鍵詞高亮顯示,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解react中useCallback內(nèi)部是如何實現(xiàn)的
前幾天有人在問在useCallback函數(shù)如果第二個參數(shù)為空數(shù)組, 為什么拿不到最新的state值,那么這一章就來分析一下useCallback內(nèi)部是如何實現(xiàn)的,感興趣的小伙伴跟著小編一起來學(xué)習(xí)吧2023-07-07React如何使用axios請求數(shù)據(jù)并把數(shù)據(jù)渲染到組件
這篇文章主要介紹了React如何使用axios請求數(shù)據(jù)并把數(shù)據(jù)渲染到組件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08使用 React hooks 實現(xiàn)類所有生命周期
react 自 16.8 開始,引入了 Hooks 概念,使得函數(shù)組件中也可以擁有自己的狀態(tài),并且可以模擬對應(yīng)的生命周期,這篇文章主要介紹了使用 React hooks 怎么實現(xiàn)類里面的所有生命周期,需要的朋友可以參考下2023-02-02react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom
這篇文章主要介紹了react如何利用useRef、forwardRef、useImperativeHandle獲取并處理dom,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-10-10