[react-native] weekly calendar ๋„ฃ์–ด๋ณด๊ธฐ

2024. 10. 31. 23:13ยท ๊ฐœ๋ฐœ/React-Native
๋ชฉ์ฐจ
  1. ๊ตฌํ˜„์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ
  2. ์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  3. ์ฝ”๋“œ ๋ธ”๋ก
  4. ๊ฒฐ๊ณผ๋ฌผ
728x90
๋ฐ˜์‘ํ˜•

 

 

์›น์œผ๋กœ ์“ฐ๊ณ  ์žˆ๋˜ ToT๋ฅผ app์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด์„œ UI๋ถ€๋ถ„๋„ ๋งŽ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. 

๊ทธ ๊ณผ์ •์—์„œ home์— weekly ์บ˜๋ฆฐ๋”๋ฅผ ๋„ฃ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ React-Native๋Š” ์ฒ˜์Œ์ด๊ธฐ๋„ํ•˜๊ณ  ๊ฐ์ด ์ž˜ ์•ˆ ์žกํ˜€์„œ ์บ˜๋ฆฐ๋” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ calendar-strip

 

 

๊ตฌํ˜„์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ

  • weekly๋กœ ๋ณด์—ฌ์•ผํ•จ
  • ์š”์ผ๋ณ„๋กœ ํด๋ฆญ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•จ
  • ์š”์ผ์ด ํด๋ฆญ๋˜๋ฉด ํ•ด๋‹น ์š”์ผ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ณด์—ฌ์•ผํ•จ
  • ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ฃผ๋ณ„๋กœ ์ด๋™์ด ๋˜์–ด์•ผํ•จ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์š”์ผ์€ ์š”์ผ์— ํ‘œ์‹œ๊ฐ€ ๋˜์–ด์žˆ์–ด์•ผํ•จ

UI ์ฐธ๊ณ 

 

 

 

์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๋‚ด๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ demo ๋ฒ„์ ผ์ด ๋งŒ๋“ค์–ด์ ธ์žˆ์–ด์„œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์ƒ์„ธํžˆ ์„ค๋ช…๋˜์–ด์žˆ๋‹ต๋‹ˆ๋‹ค 

 

https://www.npmjs.com/package/react-native-calendar-strip

 

react-native-calendar-strip

Easy to use and visually stunning calendar component for React Native. Latest version: 2.2.6, last published: 2 years ago. Start using react-native-calendar-strip in your project by running `npm i react-native-calendar-strip`. There are 14 other projects i

www.npmjs.com

 

https://github.com/BugiDev/react-native-calendar-strip

 

GitHub - BugiDev/react-native-calendar-strip: Easy to use and visually stunning calendar component for React Native.

Easy to use and visually stunning calendar component for React Native. - BugiDev/react-native-calendar-strip

github.com

 

 

 

์ฝ”๋“œ ๋ธ”๋ก

expo๋กœ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ์—ˆ๋Š”๋ฐ 

npm install react-native-calendar-strip

 

์œผ๋กœ ์„ค์น˜ํ•ด์ฃผ๊ณ  ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค. 

        <CalendarStrip
          showMonth={false}  // month ํ—ค๋” ์—†์• ๊ธฐ
          style={{ height: 80, paddingTop: 0, paddingBottom: 0 }}
          calendarColor={"#ffffff"} 
          calendarHeaderStyle={{ color: "black" }}
          dateNumberStyle={{ color: "black" }}
          dateNameStyle={{ color: "black" }}
          highlightDateContainerStyle={{ backgroundColor: "#647ce6" }} //๋™๊ทธ๋ผ๋ฏธ ๋ฐฑ๊ทธ๋ผ์šด๋“œ
          iconContainer={{ flex: 0.1 }}
          highlightDateNumberStyle={{ color: "white" }} // ํ•˜์ด๋ผ์ดํŠธ๋œ ์š”์ผ์ปฌ๋Ÿฌ
          highlightDateNameStyle={{ color: "white" }}
          selectedDate={selectedDate} // ์„ ํƒ๋œ ๋‚ ์งœ
          onWeekChanged={handleWeekChange} // ์ฃผ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ 
          onDateSelected={handleDateSelect} // ์š”์ผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋‚˜์˜ฌ ํ•จ์ˆ˜
          markedDates={markedDate} // ์š”์ผ ๋ฐ‘์— ๋™๊ทธ๋ผ๋ฏธ ๋งˆํฌ ํ‘œ์‹œํ•ด์ฃผ๊ธฐ
        />

 

  const handleDateSelect = (date: any) => {
    setSelectedDate(date); // ์„ ํƒ๋œ ๋‚ ์งœ๋ฅผ ์ƒํƒœ์— ์ €์žฅ
    const selected = moment(date);
    const year = selected.year(); // 2024
    const month = selected.month() + 1; // 10 (0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ +1)
    const day = selected.date();

    // ์š”์ผ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋‚ ์งœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ data fetch
    // ์š”์ผ ๋ฐ‘์— data ํ‘œ์‹œํ•ด์ค˜์•ผํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ - 
    // ์บ˜๋ฆฐ๋”์™€ ์ƒ๊ด€์—†์Œ
    fetchRecords(user.$id, year, month, day).then(
      ([todayRecordRes, todayTotalRecordRes]) => {
        setTodayRecord(todayRecordRes);
        setTodayTotalRecord(todayTotalRecordRes);
      }
    );

    setCurrentMonth(selected.format('MM')); // ์ฃผ ์‹œ์ž‘ ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ์›” ์—…๋ฐ์ดํŠธ
    setCurrentYear(selected.format('YYYY'))
  };

 

  const handleWeekChange = (startOfWeek : any) => {
  // ์š”์ผ์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ™”์‚ดํ‘œ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ์ฃผ์˜ ์‹œ์ž‘์ ์ด ์•„๋‹ˆ๋ผ ์ฃผ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์— ์ดˆ์ ์ด ๋˜๊ฒŒ ์„ค์ •
  // ๊ทธ๋ž˜์„œ add 6์ด ๋œ๋‹ค. 
  // ์š”์ผ ๋ฐ”๊พธ๋ฉด ์ฃผ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ด๋™ํ•˜๋Š”๊ฒŒ ๋””ํดํŠธ๊ฐ’
  
    setCurrentWeekStart(startOfWeek.add(6, 'days'));
    
    // ์ฃผ๊ฐ€ ๋ฐ”๋€” ๋•Œ 6์ผ์น˜ weekly data๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ data fetch 
    // ๊ฐ€์ ธ์™€์„œ mark๋ฅผ ์œ„ํ•œ ํ•จ์ˆ˜์— ๋„ฃ์–ด์ค€๋‹ค 
    getWeeklyRecords(user.$id, startOfWeek, 7).then((res) => {
      checkingForMark(res);
    });
  };

 

 

// ์ด๋Ÿฐ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค 
// ์ด๊ฑด ์˜ˆ์‹œ์ผ ๋ฟ. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•ด์„œ array ๋ชจ์–‘์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋จ
const markedDate = [{
        date: moment(),
        dots: [{ color: "#647ce6", selectedColor: "white" }],
      }]

 

 

 

๊ฒฐ๊ณผ๋ฌผ

 

 

 

 

 

 

728x90

'๊ฐœ๋ฐœ > React-Native' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

(ios) EAS๋กœ expo ๋นŒ๋“œํ•˜๊ณ  testFlight์— ๋“ฑ๋กํ•˜๊ธฐ (feat.์˜ค๋ฅ˜)  (0) 2024.11.22
[React Native] React Nativgation ์ ์šฉํ•˜๊ธฐ - 2  (0) 2022.03.16
[React Native] React Nativgation ์ ์šฉํ•˜๊ธฐ - 1  (0) 2022.03.09
[React Native] AppLoading  (0) 2022.02.28
[React-Native] ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์‹œ์ž‘ํ•˜๊ธฐ( with Expo)  (0) 2022.02.21
  1. ๊ตฌํ˜„์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ
  2. ์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  3. ์ฝ”๋“œ ๋ธ”๋ก
  4. ๊ฒฐ๊ณผ๋ฌผ
'๊ฐœ๋ฐœ/React-Native' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • (ios) EAS๋กœ expo ๋นŒ๋“œํ•˜๊ณ  testFlight์— ๋“ฑ๋กํ•˜๊ธฐ (feat.์˜ค๋ฅ˜)
  • [React Native] React Nativgation ์ ์šฉํ•˜๊ธฐ - 2
  • [React Native] React Nativgation ์ ์šฉํ•˜๊ธฐ - 1
  • [React Native] AppLoading
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend Developer
Ming devlog๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend Developer
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
Ming devlog
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ

๊ณต์ง€์‚ฌํ•ญ

  • About Ming ๐Ÿฐ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๊ฐœ๋ฐœ (255)
      • ๐Ÿ“ TIL (58)
      • โŒ ์˜ค๋ฅ˜ ๋…ธํŠธ (23)
      • React (23)
      • Next.js (11)
      • React-Native (6)
      • JavaScript (10)
      • Flutter (19)
      • Database (1)
      • ๐Ÿ’ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (21)
      • ๐Ÿ“š English (9)
      • Etc... (25)
      • โ›ต ํ•ญํ•ด99 (49)
    • ๐Ÿ’ป Dev (6)
      • ๐Ÿ“ TIL (4)
      • ๐Ÿ’ฌ Algorithm (1)
      • Etc... (1)

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ
  • twid
  • ๊ฐœ๋ฐœ์ž์ผ๊ธฐ
  • react
  • github
  • Firebase
  • ํ•ญํ•ด99
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ๋ฆฌ์•กํŠธ
  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • ๋ถ€ํŠธ์บ ํ”„
  • ๋ฆฌ์•กํŠธ๋„ค์ดํ‹ฐ๋ธŒ
  • ์˜์–ด๊ณต๋ถ€
  • ์ฝ”๋”ฉ๊ณต๋ถ€
  • TIL
  • ReactNative
  • ์ฝ”ํ…Œ๊ณต๋ถ€
  • nextjs
  • leetcode
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
  • Git
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • react-native
  • ์ด์ฝ”๋…ธ๋ฏธ์ŠคํŠธ
  • ๊ฐœ๋ฐœ์žํšŒ๊ณ 
  • flutter
  • ์ฝ”ํ…Œ
  • ํ”Œ๋Ÿฌํ„ฐ
  • todaywhatidid

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.1
๋ฐ(Ming) ๐Ÿˆโ€โฌ›
[react-native] weekly calendar ๋„ฃ์–ด๋ณด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.