μμ§ μμ
ν¨μ¨μ΄ μ’ λ¨μ΄μ§λ€λ³΄λ...
Main screenμμ λΆμ‘±ν λΆλΆλ€μ΄ μκΎΈ λμ λ°νμ μ‘°κΈμ΄λΌλ λ μμ±λλ₯Ό λνκ³ μ
μ΄λ―Έμ§μ λλ°μ΄κ° νμλ κ³³μ μμΉλ₯Ό μ‘°κΈμ© μμ νλ€.
main screenμμ μ΄λ―Έμ§λ₯Ό background-image
λ‘ μ€μ νκ³ μΆμλλ°
μλλ¬ΈμΈμ§ μκΎΈ μλμ΄ μλμ... κ·Έλ₯ μ΄λ―Έμ§λ‘ λ£κ³ λΆν¬λͺ
λλ₯Ό λμΈ ν,
μμͺ½ λΉ κ³΅κ°μ λ°°κ²½μμ λ°μμ λ£μ΄μ£Όμλλ κ°μͺ½κ°μμ‘λ°(λλ§κ·Έλ°κ°π€)
κ°λ¨νκ² μμ΄μ½λ μΆκ°ν΄μ μ°μ κ²°κ³Όλ¬Όμ
μλ¨μ stackμμΉ?μλ λ°°κ²½μκ³Ό κΈμ¨μμμ ν¬λͺ
μΌλ‘ μ§μ νκΈ΄ νμ§λ§
ꡬμμ΄ μμ λλμ΄μ Έ μμ΄μ ... μ¨κΈ°λ λ°©λ²μ μμ§ λͺ»μ°Ύμλ€.
μμ
νλ€κ° μκ²λλ©΄ λ€μ μμ ν΄μΌμ§ :)
μ¨λ²μμ
μ moonμ΄ λ§‘κΈ°λ‘ νμΌλ, λλ calendar screen μμ
μ λ§‘κΈ°λ‘ νλ€.
μκ°λ³΄λ€ κ°λ¨ν΄λ³΄μλλ°, ν¨ν€μ§λ₯Ό μ€μΉνκ³ λμλ
μμνκ² μ€μ ν΄μ£Όκ³ , λ°κΏμ£Όμ΄μΌ νλ λΆλΆλ€μ μΌμΌμ΄ μ°Ύλ€ λ³΄λ
κ½€λ μ΄λ €μ΄ μμ
μΈ λ― νλ€.
react μμ
λ μ²λΌ λ΄κ° μΌμΌμ΄ μμ
ν΄μ£Όλ©΄ μ’κ² μ§λ§, μμ§ react-nativeλ λ무 λ―Έμν΄μ
ν¨ν€μ§λ€μ μ΄μ¬ν μ¬μ©ν΄μ ꡬννλλ°μ μ§μ€νκΈ°λ‘ νλ€.
μ°Ύλ€λ³΄λ μ μΌ λ§μ΄ μ°μ΄λκ² react-native-calendars
μΈ λ― νλ€.
μ€μΉν΄μ κ·Έλ₯ μ½λλ₯Ό λΆνλ£κΈ°λ§ νλλ°
λκ° λ¬λ ₯μ²λΌ λμ€κΈ΄ νλλ°.... λκ° μ΄λ¬μ§....? μ 31μ λμ΄κ°λ νμμ«μλ€μ λμ§...
μΆμ΄μ μ΄κ²μ κ² μ½λλ₯Ό λ€μ λ€μ μ΄λ€ 보λ
맨 μΌμͺ½μ μλ 31~36κΉμ§μ μ«μλ μ£Ό μλ₯Ό λνλ΄λ μ«μμκ³ ,
νλμ μ«μλ μ€λ λ μ§λ₯Ό λνλ΄λ κ²μ΄μλ€.
Calendar.js
<Calendar
// μ²μμΌλ‘ μ νλμ΄μ§ λ μ§(νμ¬λ μ§), Default = Date()
current={'2020-08-25'}
// μ νμ΄ κ°λ₯ν μ΅μ λ μ§, μ΄ λ μ§ μ΄μ μ νμλ μ§λ‘ νμλ¨, Default = undefined
minDate={'2020-08-01'}
// μ νμ΄ κ°λ₯ν μ΅λ λ μ§, μ΄ λ μ§ μ΄νλ νμλ μ§λ‘ νμλ¨, Default = undefined
maxDate={'2020-08-31'}
// λ μ§λ₯Ό λλ μ λ μ€νλλ ν¨μ, Default = undefined
onDayPress={(day) => {console.log('selected day', day)}}
// λ μ§λ₯Ό κΈΈκ² λλ μ λ μ€νλλ ν¨μ, Default = undefined
onDayLongPress={(day) => {console.log('selected day', day)}}
// λ¬λ ₯ μ λͺ©μ νμλ μ νμ, Formatting values: http://arshaw.com/xdate/#Formatting
monthFormat={'yyyy MM'}
// λ¬λ ₯μμ 보μ΄λ μμ΄ λ°λλ μ€νλλ ν¨μ, Default = undefined
onMonthChange={(month) => {console.log('month changed', month)}}
// λ¬ μ΄λ νμ΄ν μ¨κΈ°κΈ°, Default = false
hideArrows={true}
// κΈ°λ³Έ νμ΄νλ₯Ό 컀μ€ν
νμ΄νλ‘ λ체 (λ°©ν₯μ 'μΌμͺ½'μ΄λ 'μ€λ₯Έμͺ½')
renderArrow={(direction) => (<Arrow/>)}
// μ΄λ² λ¬ νμ΄μ§μ λ€λ₯Έ λ¬ μ«μλ₯Ό 보μ΄μ§ μκ² ν¨, Default = false
hideExtraDays={true}
// day from another month that is visible in calendar page. Default = false
disableMonthChange={true}
// If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from Sunday.
firstDay={7}
// Hide day names. Default = false
hideDayNames={false}
// Show week numbers to the left. Default = false
showWeekNumbers={false}
// Handler which gets executed when press arrow icon left. It receive a callback can go back month
onPressArrowLeft={subtractMonth => subtractMonth()}
// Handler which gets executed when press arrow icon right. It receive a callback can go next month
onPressArrowRight={addMonth => addMonth()}
disableArrowLeft={true}
disableArrowRight={true}
// Disable all touch events for disabled days. can be override with disableTouchEvent in markedDates
disableAllTouchEventsForDisabledDays={true}
/** κΈ°λ³Έ μ λ° μ°λ μ λͺ©μ μ¬μ©μ μ§μ μ λͺ©μΌλ‘ λ°κΏ. ν¨μλ 맀κ°λ³μλ‘ dayλ₯Ό λ°λλ€. */
// μ΄ λΆλΆμ μ£Όμμ²λ¦¬ ν΄μ£Όμλλ λ¬λ ₯μ΄ λ³΄μ¬μ‘λ€. μ΄μ λ μμ§λ λͺ¨λ₯΄κ² λ€,,
renderHeader={(date) => {/*Return JSX*/}}
/>
μ¬κΈ°μ firstDay
λ₯Ό 7λ‘ μμ ν΄μ μΌμμΌμ΄ 맨 μ²μμΌλ‘ μ€κ² νκ³ ,
hideDayNames
μshowWeekNumbers
λ₯Ό falseκ°μΌλ‘ μμ νλλ
κ·Έλλ§ μΊλ¦°λκ°κ² 보μ΄κ² λνλμ§κΈ°λ νμΌλ....
λ¬λ ₯μ widthλ₯Ό κ½ μ±μμ κ°κ²©μ λνκ³ μΆκ³ ,
μμ μ΄λνλ νμ΄νλ€λ λ€λ₯Έμ¬λλ€μ λ€ λμ€λλ°
μ λλ μμ λμ€μ§λ μλκ±΄μ§ λͺ¨λ₯΄κ² λ€...γ
γ
γ
γ
κ·Έλμ! λ€λ₯Έ ν¨ν€μ§λ₯Ό μ°Ύμμ λ€μ μλν΄λ³΄κΈ°λ‘ νλ€.
μ΄μ μ μ€μΉν ν¨ν€μ§κ° λ± λ΄ μ€νμΌμ΄κΈ΄ νμ§λ§,
κ²°κ³Όλ¬Όμ΄ λ§μμ λ€μ§ μμμ... κ³μλ 리μμΉ λμ μλ‘μ΄ ν¨ν€μ§λ₯Ό μ°Ύμ보μλ€ ;)
μ΄λ²μλ μ€μΉνκ³ μ½λλ₯Ό λ£μλ§μ μ΄λ κ² λ! ꡬνμ΄ λμ΄λ²λ Έλ€.
μλμΌλ‘ listμ²λΌ μμ±μ΄ λμ΄μ μ€ν¬λ‘€μ λ°μΌλ‘ λ΄λ¦¬λ©΄ λ€μλ¬λ‘ μ΄λν μ μλλ°
μ, λκ° μμν κΈ°λ₯λ€μ΄ λ§μ λ€μ§ μμλ€.
μ λ κ² μ£Όλ₯΄λ₯΅ λ¬λ ₯μ΄ νμλλ κ²λ μ¬μ€ μ’ λ§μ μλ€μκ³ ,
λλ κΉλνκ² μ΄λ²λ¬ λ μ§λ§ 보μ¬μ£Όκ³ μΆμλ€γ
γ
κ·Έλ κ² μ΄κ²μ κ² λ§μ Έλ³΄λ€κ° μ΄μ ν¨ν€μ§ μ£Όμμ νκ³ λ€μ μλν΄λ³΄λ
μ΄? ν΄κ²°λμ§ μλ λ¬Έμ λ€μ΄ ν΄κ²°λμ΄κ°λ€..>!
λ€μ μ²μμ μ€μΉνλ ν¨ν€μ§λ₯Ό μ¬μ©νκΈ°λ‘ νλ€.
κ·Έ ν¨ν€μ§ μ€νμΌμ΄ λ λ§μ λ€μκΈ° λλ¬Έλ μκ³ ,
λ λ€μν κΈ°λ₯μ μ‘°κΈ μμ½κ² μ¬μ©ν μ μμ κ² κ°μμκ° μ΄μ .
(νλ¦¬μ§ μλ λ¬Έμ λ€μ΄ ν΄κ²°λ¬μΌλ λ°λ‘ λ€μ λμμ€κΈ°γ
)
μ²μμ μ€μΉν΄μ μ΄κ²μ κ² μμ
ν΄λ³΄μλ react-native-calendars
μμ
widthλ₯Ό μ€μ νμ λ μλμ΄ λμ§ μμλ κ² κ°μλ°,
λλ²μ§Έλ‘ μμ
μ μλνλ react-native-calendario
λ₯Ό μ€μΉν΄μ λ§μ§λ€κ° μμλ€.
calendarλ₯Ό κ°μΈκ³ μλ containerμ widthλ‘ λμ΄μ μ‘°μ μ΄ κ°λ₯νλ€λ κ²μ....
κ·Έλμ CalendarContainer
μ widthλ₯Ό 100%λ‘ μ€μ νλλ μΉΈλ€μ΄ λμ΄μ‘λ€!π€©
κΈ°μ‘΄ μ½λλ₯Ό κ°μ Έμμ λ μ΄λμ μν νμ΄ν κ΄λ ¨ μ½λμμ
<Calendar
...
hideArrows={true}
renderArrow={(direction) => <Arrow />}
...
/>
μ΄λ κ² λμ΄μκΈΈλ μλ λλ체 <Arrow /> μ»΄ν¬λνΈλ μ΄λμ μλ€λκ±°μΌ..
λΌλ
μκ°μ μ¬λ‘μ‘νμ λ©λΆμ΄ μμλλ°.......
μ½λλ₯Ό μ΄κ²μ κ² λ§μ Έλ³΄κ³ κ³ λ―Όνλ€κ° renderArrow
μμ 컀μλ₯Ό μ¬λ €λμλλ
μ€λͺ
λ¬Έ? κ°μκ² λ μ, μ λ μΉ΄!λ₯Ό μΈμΉκ² λ κ² κ°λ€.
κ·Έλ κ² κ²μμ ν΅ν΄μ μ¬μ©λ²μ μκ² λμκ³ κ²°κ³Όμ μΌλ‘λ
<AntDesign />
μ μμ΄μ½μ μ¬μ©ν΄μ ꡬνμ μ±κ³΅γ
γ
μ½λλ
renderArrow={(direction) => direction === "left" ? (
<AntDesign name="left" size={20} color="#50cebb" />
) : (
<AntDesign name="right" size={20} color="#50cebb" />
)
}
쑰건문μ λν΄ μ’ λ 곡λΆν΄μΌκ² λ€λ μκ°μ΄ λ€μλ€γ
γ
μμ΄λ κ² μ¬μ©μ μ λͺ»νλ건μ§.... μ΄λ κ² μ½λλ‘ λ³΄λ©΄ λ°λ‘ μ΄ν΄κ° κ°μ§λ§
λ΄κ° μκ°ν΄λ΄λκ² μ μλλ€γ
γ
λ©°μΉ λ§μ μ¬λΏ μνμ°©μ€λ₯Ό ν΅ν΄ calendar ꡬνμ ν΄λμ§λ§,
μμ§ κ΅¬νν΄μΌ ν κΈ°λ₯λ€μ΄ λ§λ€γ
γ
μ°μ μ μ’ μμ¬μ λΆλ €μ λ£κ³ μΆμ κΈ°λ₯λ€κΉμ§ μ 리λ₯Ό ν΄λ³΄μλ©΄,
μλ νμΈμ νΉμ Ant Design μ»΄ν¬λνΈλ antdμ€μΉνκ³ λ°λ‘ λΆλ¬μ€λ©΄ λ κΉμ?