λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JavaScript/React

[React] React μ—μ„œ bootstrap μ‚¬μš©ν•˜κΈ°(ReactStrap)

by soyλ―Έλ‹ˆ 2021. 10. 20.

 

 

 

πŸ’‘ bootstrap μ΄λž€?

ν”„λ‘ νŠΈμ—”λ“œ λ””μžμΈμ„ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ„λ‘ λ„μ•„μ£ΌλŠ” html, css, js ν”„λ ˆμž„μ›Œν¬μ΄λ‹€.

이런 λΆ€νŠΈμŠ€νŠΈλž©μ„ react μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ νŒ¨ν‚€μ§€λ‘œ λ§Œλ“  것이 reactstrap 이닀.

 

 

 

01. Alert μ‚¬μš©ν•˜κΈ°

reactstrap 을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € reactstrap 을 μ„€μΉ˜ν•œλ‹€.

1. VSCode 둜 μž‘μ—…μ„ ν•˜κΈ° λ•Œλ¬Έμ— VSCodeμ—μ„œ react μž‘μ—…μ„ ν•˜λŠ” 폴더 경둜둜 λ“€μ–΄κ°€μ„œ 터미널을 μ—΄κ³  reactstrap 을 μ„€μΉ˜ν•˜λŠ” npm install --save reactstrap λͺ…λ Ήκ³Ό bootstrap 을 μ„€μΉ˜ν•˜λŠ” npm install --save bootstrap μ„ μ‹€ν–‰ν•œλ‹€.

 

 

 

 

2. App.js μ—μ„œ reactStrapTest.js νŒŒμΌμ„ μž„ν¬νŠΈν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³ , boostrap.css λ₯Ό μž„ν¬νŠΈν•΄μ„œ <reactstrap> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  λ•Œ bootstrap.css κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€. μ—¬κΈ°μ„œλŠ” reactstrap μ€‘μ—μ„œ Alert λ₯Ό μ‚¬μš©ν–ˆλ‹€.

 

 

 

3. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

 

 

 

 

02. Badge μ‚¬μš©ν•˜κΈ°

 

 

1. App.js μ—μ„œ reactStrapTest.js νŒŒμΌμ„ μž„ν¬νŠΈν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³ , boostrap.css λ₯Ό μž„ν¬νŠΈν•΄μ„œ <reactstrap> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  λ•Œ bootstrap.css κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€. μ—¬κΈ°μ„œλŠ” reactstrap μ€‘μ—μ„œ Badge λ₯Ό μ‚¬μš©ν–ˆλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

 

03. Breadcrumbs μ‚¬μš©ν•˜κΈ°

 

1. App.js μ—μ„œ reactStrapTest.js νŒŒμΌμ„ μž„ν¬νŠΈν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³ , boostrap.css λ₯Ό μž„ν¬νŠΈν•΄μ„œ <reactstrap> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  λ•Œ bootstrap.css κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€. μ—¬κΈ°μ„œλŠ” reactstrap μ€‘μ—μ„œ BreadcrumbItem 을 μ‚¬μš©ν–ˆλ‹€.

 

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

04. Button Dropdown μ‚¬μš©ν•˜κΈ°

 

1. App.js μ—μ„œ reactStrapTest.js νŒŒμΌμ„ μž„ν¬νŠΈν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³ , boostrap.css λ₯Ό μž„ν¬νŠΈν•΄μ„œ <reactstrap> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  λ•Œ bootstrap.css κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€. μ—¬κΈ°μ„œλŠ” reactstrap μ€‘μ—μ„œ Button Dropdown 을 μ‚¬μš©ν–ˆλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

 

05. Button Group μ‚¬μš©ν•˜κΈ°

 

1. Button Group 은 λΉ„μŠ·ν•œ κΈ°λŠ₯을 ν•˜λŠ” λ²„νŠΌμ„ 그룹으둜 관리할 수 μžˆλŠ” νŒ¨ν‚€μ§€μ΄λ‹€.

App.js μ—μ„œ reactStrapTest.js νŒŒμΌμ„ μž„ν¬νŠΈν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜κ³ , boostrap.css λ₯Ό μž„ν¬νŠΈν•΄μ„œ <reactstrap> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  λ•Œ bootstrap.css κ°€ 적용될 수 μžˆλ„λ‘ ν•œλ‹€. μ—¬κΈ°μ„œλŠ” reactstrap μ€‘μ—μ„œ Button Group 을 μ‚¬μš©ν–ˆλ‹€.

 

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

 

 

 

06. Buttons μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Button color 에 λ¬Έμžμ—΄μ„ λ„£μ–΄μ£Όλ©΄ ν•΄λ‹Ή μƒ‰κΉ”λ‘œ λ²„νŠΌμ˜ 색이 바뀐닀.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

07. Card μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Card νŒ¨ν‚€μ§€λŠ” 이미지 제λͺ©, λΆ€μ œλͺ©, λ‚΄μš©, λ²„νŠΌ 등을 ν•œ μ„ΈνŠΈλ‘œ λ¬ΆλŠ”λ‹€. Card λ‹¨μœ„λ‘œ 리슀트λ₯Ό λ§Œλ“€μ–΄ λ°˜λ³΅ν•΄μ„œ 좜λ ₯ν•˜λ©΄, μ •ν˜•ν™”λœ μ½˜ν…μΈ  λͺ©λ‘μ„ λ§Œλ“€ 수 μžˆλ‹€. 

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

08. Carousel μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Carousel νŒ¨ν‚€μ§€λŠ” μŠ¬λΌμ΄λ“œλ₯Ό μžλ™μœΌλ‘œ νšŒμ „μ‹œν‚€λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. 이미지 ν…μŠ€νŠΈ, λ²„νŠΌ λ“±μœΌλ‘œ 이루어진 μŠ¬λΌμ΄λ“œλ₯Ό 일정 μ‹œκ°„ λ‹¨μœ„λ‘œ λ‹€μŒ μŠ¬λΌμ΄λ“œλ‘œ μ΄λ™μ‹œν‚¨λ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

09. Collapse μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Collapse νŒ¨ν‚€μ§€λŠ” νŠΉμ • μ˜μ—­μ„ 펼치고 μˆ¨κΈ°λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. λ²„νŠΌ 이벀트둜 펼치고 μˆ¨κΈ°λŠ” κΈ°λŠ₯을 μ œμ–΄ν•  수 μžˆλ‹€. 상단뢀터 점차적으둜 νŽΌμ³μ§€κ³  ν•˜λ‹¨λΆ€ν„° μˆ¨κ²¨μ§„λ‹€λŠ” 것이 show(), hide() ν•¨μˆ˜μ™€μ˜ 차이점이닀.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

10. Fade μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Fade νŒ¨ν‚€μ§€λŠ” νŠΉμ • μ˜μ—­μ„ μ„œμ„œνžˆ λ‚˜νƒ€λ‚΄κ³  μˆ¨κΈ°λŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. κΈ°λŠ₯을 λ²„νŠΌ 이벀트둜 μ œμ–΄ν•  수 μžˆλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

11. Form μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Form νŒ¨ν‚€μ§€λŠ” κΈ°μ‘΄ <html form> νƒœκ·Έμ— κΉ”λ”ν•˜κ³  μ •λ¦¬λœ μŠ€νƒ€μΌμ„ κ°„νŽΈν•˜κ²Œ μ μš©ν•΄ μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

12. Input Group μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Input Group νŒ¨ν‚€μ§€λŠ” μ—¬λŸ¬ 개의 νƒœκ·Έλ₯Ό ν•˜λ‚˜μ˜ input 그룹으둜 λ¬Άμ–΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ§€μ›ν•œλ‹€. 

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

13. Jumbotron μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Jumbotron μ€ λŒ€ν˜• μ „κ΄‘νŒμ„ μ˜λ―Έν•œλ‹€. 넓은 μ˜μ—­μ— λˆˆμ— λ„κ²Œ 정보λ₯Ό ν‘œμ‹œν•΄ μ‚¬μš©μžμ˜ 관심을 λΆˆλŸ¬μΌμœΌν‚¬ 수 μžˆλ‹€

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

14. List Group μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

List Group νŒ¨ν‚€μ§€λŠ” μ •λˆλœ μŠ€νƒ€μΌμ˜ λͺ©λ‘μ„ ν‘œμ‹œν•  λ•Œ μ‚¬μš©ν•œλ‹€. 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

15. Modal μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Modal νŒ¨ν‚€μ§€λŠ” alert() ν•¨μˆ˜μ™€ 같이 μ‚¬μš©μžμ—κ²Œ μ›ν•˜λŠ” μ‹œμ μ— μ•Œλ¦Ό 창을 λ„μ›Œ ν•„μš”ν•œ λ‚΄μš©μ„ 보여쀀닀. λ‹€λ§Œ alert() 처럼 μ›Ή λΈŒλΌμš°μ €μ—μ„œ νŒμ—… 창을 차단할 수 μ—†κ³  λ°°κ²½ νŽ˜μ΄μ§€μ™€ μ–΄μšΈλ¦¬λŠ” λ””μžμΈμ„ μ μš©ν•  μˆ˜λŠ” μžˆλ‹€.

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

16. Navbar μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Navbar νŒ¨ν‚€μ§€λŠ” μ›Ή μ‚¬μ΄νŠΈμ˜ λ‚΄λΆ€ νŽ˜μ΄μ§€λ‘œ μ‰½κ²Œ 이동할 수 μžˆλ„λ‘ 메뉴 λ¦¬μŠ€νŠΈμ™€ 링크λ₯Ό μ œκ³΅ν•œλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

17. Pagination μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

데이터가 λ§Žμ•„μ„œ ν•œ νŽ˜μ΄μ§€μ— λͺ¨λ‘ ν‘œμ‹œν•  수 없을 λ•Œ μ—¬λŸ¬ νŽ˜μ΄μ§€μ— λ‚˜λˆ  ν‘œμ‹œν•˜λŠ”λ° μ΄λ•Œ Pagination νŒ¨ν‚€μ§€κ°€ νŽ˜μ΄μ§€ 번호, 이전/λ‹€μŒ νŽ˜μ΄μ§€ 첫/λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€ λ²„νŠΌμ„ μ‰½κ²Œ κ΅¬ν˜„ν•  수 있게 지원해쀀닀.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

 

18. Popovers μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Popovers  νŒ¨ν‚€μ§€λŠ” html μš”μ†Œλ₯Ό ν΄λ¦­ν–ˆμ„ λ•Œ μš”μ†Œμ— μ—°κ²°λœ λ©”μ‹œμ§€ λ°•μŠ€λ₯Ό λ„μšΈ 수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. tooltip κ³Ό 거의 λ™μΌν•˜κ²Œ λ™μž‘ν•œλ‹€.

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

19. Progress μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Progress  νŒ¨ν‚€μ§€λŠ” 전체 μž‘μ—…μ— λŒ€ν•œ ν˜„μž¬ 진행 μƒνƒœλ₯Ό ν‘œν˜„ν•œλ‹€. 진행 λ°” 내뢀에 λ¬Έμžμ—΄μ„ 넣을 수 있고, 색상을 μ μš©ν•  수 μžˆλ‹€.

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

20. Spinner μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Spinner νŒ¨ν‚€μ§€λŠ” μ–΄λ–€ μž‘μ—…μ΄ μ§„ν–‰λ˜κ³  μžˆμŒμ„ ν‘œμ‹œν•˜λŠ”, μ›€μ§μ΄λŠ” 원 ν˜•νƒœμ˜ λ””μžμΈμ„ μ œκ³΅ν•˜λ©°, 색상, λ„ˆλΉ„, 높이 값을 지정할 수 μžˆλ‹€.

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

21. Table μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Table νŒ¨ν‚€μ§€λŠ” <html table> νƒœκ·Έμ— κ°„νŽΈν•˜κ²Œ μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆλ„λ‘ 지원해쀀닀. ν…Œμ΄λΈ” 색상, κ°€λ‘œμ€„, μ„Έλ‘œμ€„, 크기, hover, striped 속성을 지정할 수 μžˆλ‹€.

 

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

22. Tab μ‚¬μš©ν•˜κΈ°

 

1. μ•žμ—μ„œμ™€ 같이 App.js μž‘μ—… ν›„ reactStrapTest μž‘μ—…ν•˜κΈ°

Tab νŒ¨ν‚€μ§€λŠ” μ‚¬μš©μž λ™μž‘μ— 따라 νŠΉμ • μ˜μ—­μ— λ‹€λ₯Έ λ‚΄μš©μ„ ν‘œμ‹œν•  λ•Œ μ‚¬μš©ν•œλ‹€. 클릭 μ΄λ²€νŠΈμ— 따라 μ›ν•˜λŠ” μ˜μ—­μ„ ν‘œμ‹œν•΄μ•Ό ν•  경우, κ°„νŽΈν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

 

 

2. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

23.  sweetalert2 Basic μ‚¬μš©ν•˜κΈ°

 

sweetalert2 νŒ¨ν‚€μ§€λŠ” λ‹€μ–‘ν•œ λ””μžμΈκ³Ό κΈ°λŠ₯의 μ•Œλ¦Όμ°½μ„ μ§€μ›ν•œλ‹€. alert() 와 같이 μ‚¬μš©μžμ—κ²Œ ν•„μš”ν•œ 정보λ₯Ό μ•Œλ¦Όμ°½μœΌλ‘œ ν‘œμ‹œν•œλ‹€.

 

 

1. sweetalert2 μ„€μΉ˜ν•˜κΈ°

npm install sweetalert2

 

 

 

2. sweetAlertTest.js μž‘μ—…ν•˜κΈ°

 

 

 

 

 

3. μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

import React, { Component } from 'react'
import Swal from 'sweetalert2'

class sweetAlertTest extends Component {
    componentDidMount() {
        Swal.fire('1. SweetAlert')
        alert('2. alert()')
    }
    render() {
        return (
            <h1>sweetalert2</h1>
        )
    }
}
export default sweetAlertTest

 

 

πŸ’‘ μœ„μ˜ 경우 alert() ν•¨μˆ˜κ°€ Swal.fire() ν•¨μˆ˜λ³΄λ‹€ λ¨Όμ € μ‹€ν–‰λœλ‹€. μ™œλƒν•˜λ©΄ sweetalert λŠ” λΉ„λ™κΈ°μ μœΌλ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— Swal.fire() ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œμΌœ 놓고 μ™„λ£Œ 여뢀에 상관없이 λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. alert() ν•¨μˆ˜λŠ” λ™κΈ°μ μœΌλ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— 확인 λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•ŠμœΌλ©΄ λ‹€μŒ μž‘μ—…μœΌλ‘œ λ„˜μ–΄κ°€μ§€ μ•ŠλŠ”λ‹€.

 

 

 

 

24. sweetalert2 position μ‚¬μš©ν•˜κΈ°

 

sweetalert2 νŒ¨ν‚€μ§€λŠ” μ•Œλ¦Ό 창의 ν‘œμ‹œ 방식과 ꡬ성 μš”μ†Œλ“€μ„ μ›ν•˜λŠ” ν˜•νƒœλ‘œ λ³€κ²½ν•  수 μžˆλŠ” μ˜΅μ…˜μ„ μ œκ³΅ν•œλ‹€. μ˜΅μ…˜ 쀑 position 은 μ•Œλ¦Ό 창의 ν‘œμ‹œ μœ„μΉ˜λ₯Ό κ²°μ •ν•œλ‹€.

 

 

 

μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

25. sweetalert2 confirm μ‚¬μš©ν•˜κΈ°

 

sweetalert2 confirm 은 μ‹€μ œ μž‘μ—…μ„ μ‹€ν–‰ν•˜κΈ° 전에 λ‹€μ‹œ ν•œλ²ˆ ν™•μΈν•˜λŠ” μ•Œλ¦Ό 창을 ν‘œμ‹œν•œλ‹€.

 

 

 

μ›Ή μ‹€ν–‰ ν™”λ©΄

 

 

 

 

 

λŒ“κΈ€