Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- react next
- nextjs사용법
- vue 지역 컴포넌트
- 프로그래머스 데브코스 프론트엔드
- SCSS use
- 리액트
- 쌓임맥락
- vue mixin
- SCSS import
- postcss
- 리스트 렌더링
- 고양이 사진 검색기
- 폼 입력 바인딩
- Vue
- vue 이벤트 수신
- KDT 프로그래머스
- 이벤트 수식어
- 프로그래머스 데브코스
- KDT 프로그래머스 데브코스 프론트엔드
- SCSS forward
- Spacer
- vuex map
- SCSS extend
- netlify redirect
- git 같은계정 다른 컴퓨터
- 프로그래머스 K_Digital Training
- 프로그래머스 프론트엔드 데브코스
- 다른컴퓨터에서 git사용
- flex
- intersection opserver
Archives
- Today
- Total
혼자 적어보는 노트
[React] 정규표현식을 이용하여 텍스트 안에서 해시태그 분리하기 본문
부모 컴포넌트에서 아래와 같이 텍스트를 전달하는 컴포넌트를 만든다
const textData = '정규표현식 #리액트 #react #정규표현식' //ex
<TextContent textData={textData}/>
[TextContent.js]
const TextContent = ({ textData }) => (
// '정규표현식 #리액트 #react #정규표현식'
<div>
{textData.split(/(#[^\s#]+)/g).map((item) => {
//split에서는 ()를 써야함
if (item.match(/(#[^\s#]+)/)) {
return (
<Link>{item}</Link>
);
}
return v;
})}
</div>
);
const textData = '정규표현식 #리액트 #react #정규표현식'
1. textData.split(/(#[^\s#]+)/g)
/#[^\s#]+/g : #으로 시작하는 1개 이상의(+) 문자안에 띄어쓰기(\s)와 #을 포함하지 않는 것
split를 사용하여 분리된 배열을 만들어준다.
textData.split(/(#[^\s#]+)/g)
* split를 할 경우 ()처리를 해주어야 한다.
결과:
['정규표현식 ', '#리액트', ' ', '#react', ' ', '#정규표현식', '']
2. map
분리된 배열에 map을 사용하여 각 요소마다
해당 정규식에 포함이 되어있는지 match를 통해서 확인한다.
3. match
item.match(/(#[^\s#]+)/)를 하여 값이 나온다면 Link를 걸어 return해주고
null이 나온다면 일반 텍스트로 변환하여 return한다.
'React' 카테고리의 다른 글
더미데이터(dummy data) 만들기 / 더미 이미지 사이트 (0) | 2022.03.10 |
---|---|
[React] create-react-app 없이 react 개발환경 세팅 해보기 (0) | 2022.03.09 |
[React] styled-component (0) | 2022.03.06 |
[React] input type="file" 커스터마이징 하기 (0) | 2022.03.03 |
[React] 영역 밖 클릭시 이벤트 / 모달 닫기 (0) | 2022.02.24 |
Comments