ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ToyProject-Todomate] ํˆฌ๋‘๋ฉ”์ดํŠธ ํด๋ก  ํ”„๋กœ์ ํŠธ 38
    WEB Dev/ToyProject 2022. 3. 21. 23:25
    728x90


    ๐Ÿ”ท CloneTodo โ˜‘ - Todomate Clone Project  |  Team CloneMate

     

    CloneTodo : ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ๋ž‘ํ•˜๋Š” ํˆฌ๋‘๋ฉ”์ดํŠธ๋ฅผ ํด๋ก ํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ

     


     

    ์™€์šฐ ์—„์ฒญ ์˜ค๋žœ๋งŒ์— ํ† ์ดํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ด๋ณธ๋‹ค. 

    ๊ทธ๋™์•ˆ ์ž‘์—…์„ ์•ˆํ•œ ๊ฑด ์•„๋‹ˆ๊ณ  ๊ธ€์„ ์ ๋Š” ์‹œ๊ฐ„์— ๋นจ๋ฆฌ ๊ฐœ๋ฐœ์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— ๊ธ€์„ ์ข€ ์ž์ œํ–ˆ๋‹ค.

     

     

    ๊ทธ๋™์•ˆ ํ•œ ์ผ์€

     

     

     

    1. ํˆฌ๋‘๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋„์›Œ์ง€๋Š” ๋ชจ๋‹ฌ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ - ์ˆ˜์ •, ๋‚ด์ผํ•˜๊ธฐ, ๋‚ ์งœ๋ฐ”๊พธ๊ธฐ, ์ˆœ์„œ๋ณ€๊ฒฝ, ์‚ญ์ œ

       ์ˆ˜์ •, ๋‚ด์ผํ•˜๊ธฐ, ๋‚ ์งœ ๋ฐ”๊พธ๊ธฐ, ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

       ๊ทธ๋ฆฌ๊ณ  ์ˆœ์„œ ๋ณ€๊ฒฝ์„ ๋ณ„๋„ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ด์„œ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•ด์•ผํ•˜๋Š”๋ฐ

       ์ด ๋กœ์ง์ด ์กฐ๊ธˆ ๋ณต์žกํ•ด์„œ ๋ฐฑ์—”๋“œ ํŒ€์›๋ถ„๊ณผ ๋‚˜์ค‘์— ๊ฐ™์ด ์ž‘์—…ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

       ๋“œ๋ž˜๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋Œ€์ถฉ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋Š” ํ–ˆ๋Š”๋ฐ ์ง„์ „์ด ๋งŽ์ด ์•ˆ๋˜์—ˆ๋‹ค.

       ๋‚ด์ผ ํ•˜๊ธฐ์™€ ๋‚ ์งœ๋ฐ”๊พธ๊ธฐ๋ฅผ ํด๋ฆญํ•œ ๊ฒฝ์šฐ datepicker๋ฅผ ์จ์„œ ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๊ณ , ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด state๊ฐ€ ๋ฐ”๋€Œ๋„๋ก ํ•˜์˜€๋‹ค.

     

     

     

     

     

    2. ๊ฐ„ํŽธ ์ž…๋ ฅ ๊ตฌํ˜„

        ๊ฐ„ํŽธ ์ž…๋ ฅ์ด๋ผ๋Š” UI๋ช…์ด ์™€๋‹ฟ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‚ด ์‹์œผ๋กœ ๋ฐ”๊ฟจ๋‹ค. 

        ๊ธฐํ•œ์ด ์žˆ๋Š” ํ•  ์ผ ์„ค์ •์ด๋ผ๋Š” UI๋ช…์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋ชฉํ‘œ๋ฅผ ๋ฟŒ๋ ค์ค€ ๋‹ค์Œ ๋ชฉํ‘œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜ ์–‘์‹์ด ์ƒ์„ฑ๋˜๊ณ 

        ์ƒ์„ฑ๋œ ์–‘์‹์— ๋ฐ˜๋ณตํ•  ์ผ์ •๊ณผ ์š”์ผ์„ ์„ค์ •ํ•œ ๋‹ค์Œ ํ™•์ธ์„ ํด๋ฆญํ•˜๋ฉด state์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

        ์บ˜๋ฆฐ๋”๊ฐ€ ๊ฐ๊ฐ ์‹œ์ž‘ ๋‚ ์งœ์™€ ์ข…๋ฃŒ ๋‚ ์งœ์— ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•ด์„œ ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ

        ํ•˜๋‚˜์˜ ์บ˜๋ฆฐ๋” ๋ชจ๋‹ฌ์„ ์ด์šฉํ•ด์„œ ๊ฐ input ๊ฐ’์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์•˜์„ ๊ฑฐ ๊ฐ™๋‹ค.

        ๋‚˜์ค‘์— ์ด ๋ถ€๋ถ„์„ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค.

     

     

     

     

     

     

     

    3. CSS ๋œฏ์–ด๊ณ ์น˜๊ธฐ

     

     

        ์ดˆ๋ฐ˜์— CSS๋ฅผ ๋•์ง€๋•์ง€ ๋ฐœ๋ผ๋†”์„œ sx={{}} ์†์„ฑ์œผ๋กœ ๋งŽ์ด ๋ถ™์—ฌ๋†จ๋‹ค. ์ด ๋ถ€๋ถ„์„ ๋‹ค ๋–ผ์„œ SCSS๋กœ CSS๋ฅผ ๊ตฌํ˜„ํ–ˆ๊ณ 

        ๋ณ€์ˆ˜๋ž‘ ๋ฏน์Šค์ธ๋„ ํ™œ์šฉ์„ ํ–ˆ๋‹ค.

        ๊ฐ™์€ ๋””์ž์ธ์ด ์—ฌ๋Ÿฌ๊ตฐ๋ฐ ๋“ค์–ด๊ฐ€๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฏน์Šค์ธ์„ ์“ฐ๋‹ˆ ์˜คํžˆ๋ ค ๋” ๋ณด์ˆ˜๊ฐ€ ๋ถˆํŽธํ•œ ๋Š๋‚Œ์ด ์žˆ์—ˆ๋Š”๋ฐ

        ํ†ต์‹  ์—ฐ๊ฒฐ๊นŒ์ง€ ๋๋‚˜๋ฉด CSS๋ฅผ ์ตœ์ข… ์ˆ˜์ •ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

     

     

     

    4. ๊ธฐ์กด์˜ ๋ชฉํ‘œ ๋”ฐ๋กœ ํˆฌ๋‘ ๋”ฐ๋กœ API Result ํ†ตํ•ฉ

     

     

    ๊ธฐ์กด์— ์•„๋ž˜์™€ ๊ฐ™์ด goal ๋ฐ์ดํ„ฐ์™€ todo ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ผ์—ˆ๋Š”๋ฐ

     

    //๋ชฉํ‘œ ๋ฐ์ดํ„ฐ
    
    export const goalsData = atom({ // ๋กœ๋”ฉ ์‹œ ๋ชจ๋“  ๋ชฉํ‘œ ๋ฟŒ๋ฆฌ๊ธฐ
      key: "goalsData",
      default: [
        {
          "goal_id": 0,
          "next_goal_id": 1,
          "title": "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ",
          "privacy": "PUB",
          "box_color": "",
          "title_color": "#3CB371"
        },
        {
          "goal_id": 1,
          "next_goal_id": 2,
          "title": "๋‘ ๋ฒˆ์งธ ๋ชฉํ‘œ",
          "privacy": "PRI",
          "box_color": "",
          "title_color": "#234d22"
        },
        {
          "goal_id": 2,
          "next_goal_id": 3,
          "title": "์„ธ ๋ฒˆ์งธ ๋ชฉํ‘œ",
          "privacy": "PRI",
          "box_color": "",
          "title_color": "#C71585"
        },
        {
          "goal_id": 3,
          "next_goal_id": 4,
          "title": "๋„ค ๋ฒˆ์งธ ๋ชฉํ‘œ",
          "privacy": "PRI",
          "box_color": "",
          "title_color": "#21bdbd"
        }
      ]
    })
    
    export const goalReadOnly = atom({
      key: "goalReadOnly",
      default: "read"
    })
    
    export const createRepeatDay = atom({
      key: "createRepeatDay",
      default: {
      "sun": "N", //y ๋ฉด ์ผ์š”์ผ ๋ฐ˜๋ณต, n ์ด๋ฉด ๋ฐ˜๋ณต x
      "mon": "N",
      "tue": "N",
      "wed": "N",
      "thu": "N",
      "fri": "N",
      "sat": "N",
    }
    });

     

     

    //ํˆฌ๋‘ ๋ฐ์ดํ„ฐ
    
    export const todoData = atom({ // ๋กœ๋”ฉ ์‹œ ์˜ค๋Š˜ ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ // ์บ˜๋ฆฐ๋”์—์„œ ๋‚ ์งœ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ๋‚ ์งœ๋กœ ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ // ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋Š” 2022-02-05
      key: "todoData",
      default: [
        {
        "todo_id": 0,
        "goal_id": 0, //๋ฌถ์—ฌ์žˆ๋Š” goal id
        "next_todo_id": 1, //๋‹ค์Œ todo id (์ˆœ์„œ์ง€์ •์šฉ)
        "title": "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ํ•  ์ผ 0",
        "date": "2022-02-05",
        "end_repeat_date": "2022-02-05", //๋ฐ˜๋ณต ์ข…๋ฃŒ ์ผ์ž. ๋ฐ˜๋ณต ์—†์œผ๋ฉด date ์™€ ๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ ์—†์Œ
        "repeat_days": {
            "sun": "N", //y ๋ฉด ์ผ์š”์ผ ๋ฐ˜๋ณต, n ์ด๋ฉด ๋ฐ˜๋ณต x
            "mon": "N",
            "tue": "N",
            "wed": "N",
            "thu": "N",
            "fri": "N",
            "sat": "N",
        },
        "check_yn" : "N" //๋‹ฌ์„ฑ์—ฌ๋ถ€
      },
      {
        "todo_id": 1,
        "goal_id": 0, //๋ฌถ์—ฌ์žˆ๋Š” goal id
        "next_todo_id": 2, //๋‹ค์Œ todo id (์ˆœ์„œ์ง€์ •์šฉ)
        "title": "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ํ•  ์ผ 1",
        "date": "2022-02-05",
        "end_repeat_date": "2022-02-05", //๋ฐ˜๋ณต ์ข…๋ฃŒ ์ผ์ž. ๋ฐ˜๋ณต ์—†์œผ๋ฉด date ์™€ ๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ ์—†์Œ
        "repeat_days": {
            "sun": "N", //y ๋ฉด ์ผ์š”์ผ ๋ฐ˜๋ณต, n ์ด๋ฉด ๋ฐ˜๋ณต x
            "mon": "N",
            "tue": "N",
            "wed": "N",
            "thu": "N",
            "fri": "N",
            "sat": "N",
        },
        "check_yn" : "N" //๋‹ฌ์„ฑ์—ฌ๋ถ€
      },
      {
        "todo_id": 0,
        "goal_id": 1, //๋ฌถ์—ฌ์žˆ๋Š” goal id
        "next_todo_id": 1, //๋‹ค์Œ todo id (์ˆœ์„œ์ง€์ •์šฉ)
        "title": "๋‘ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ํ•  ์ผ 1",
        "date": "2022-02-05",
        "end_repeat_date": "2022-02-05", //๋ฐ˜๋ณต ์ข…๋ฃŒ ์ผ์ž. ๋ฐ˜๋ณต ์—†์œผ๋ฉด date ์™€ ๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ ์—†์Œ
        "repeat_days": {
            "sun": "N", //y ๋ฉด ์ผ์š”์ผ ๋ฐ˜๋ณต, n ์ด๋ฉด ๋ฐ˜๋ณต x
            "mon": "N",
            "tue": "N",
            "wed": "N",
            "thu": "N",
            "fri": "N",
            "sat": "N",
        },
        "check_yn" : "N" //๋‹ฌ์„ฑ์—ฌ๋ถ€
      }
    ]
    })

     

     

     

    ์ด๊ฒƒ์„ ํ•˜๋‚˜๋กœ ๋ฌถ์œผ๋ฉด์„œ ๋ฐฐ์—ด ์•ˆ์— ๊ฐ์ฒด, ๊ฐ์ฒด ์•ˆ์— ๋ฐฐ์—ด ์ด๋Ÿฐ ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด์„œ ํ™”๋ฉด ๋ณ€ํ™” ๋ Œ๋”๋ง ๋กœ์ง์„ ์ „๋ฉด ๊ต์ฒดํ–ˆ๋‹ค.

    ๊ธฐ์กด ๋ชฉํ‘œ / ํˆฌ๋‘ ๋ฅผ ๋ชฉํ‘œ+ํˆฌ๋‘๋กœ ๋ฐ”๊พผ ๊ฒƒ.

     

     

     

    // todo api
    export const objTodosDataResult = atom({
      key: 'objTodosDataResult',
      default: [
      {
      goalTitle : "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ",
      goalId: 1,
      goalOrderNo : 1,
      goalTitleColor : "#ff0000",
      todos : [
           {goalId: 1,
            todoId: 1,
            orderNo: 1,
            title: "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ์ฒซ ๋ฒˆ์งธ ํ•  ์ผ",
            date: "2022-02-13",
            endRepeatDate: "2022-02-13",
            repeatDays: {
              THU: "N",
              WEN: "N",
              TUE: "N",
              SAT: "N",
              FRI: "N",
              MON: "N",
              SUN: "N"
            },
            checkYn: "N"
            },
            {goalId: 1,
              todoId: 2,
              orderNo: 2,
              title: "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ๋‘ ๋ฒˆ์งธ ํ•  ์ผ",
              date: "2022-02-13",
              endRepeatDate: "2022-02-14",
              repeatDays: {
                THU: "N",
                WEN: "N",
                TUE: "N",
                SAT: "N",
                FRI: "N",
                MON: "N",
                SUN: "N"
              },
              checkYn: "N"
          },
          {goalId: 1,
            todoId: 3,
            orderNo: 3,
            title: "์ฒซ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ์„ธ ๋ฒˆ์งธ ํ•  ์ผ",
            date: "2022-02-13",
            endRepeatDate: "2022-02-17",
            repeatDays: {
              THU: "N",
              WEN: "Y",
              TUE: "N",
              SAT: "N",
              FRI: "Y",
              MON: "N",
              SUN: "N"
            },
            checkYn: "N"
          },
      ]},
      {
        goalTitle : "๋‘ ๋ฒˆ์งธ ๋ชฉํ‘œ",
        goalId: 2,
        goalOrderNo : 2,
        goalTitleColor : "#ff873d",
        todos : [
             {goalId: 2,
              todoId: 1,
              orderNo: 1,
              title: "๋‘ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ์ฒซ ๋ฒˆ์งธ ํ•  ์ผ",
              date: "2022-02-13",
              endRepeatDate: "2022-02-13",
              repeatDays: {
                THU: "N",
                WEN: "N",
                TUE: "N",
                SAT: "N",
                FRI: "N",
                MON: "N",
                SUN: "N"
              },
              checkYn: "N"
              },
              {goalId: 2,
                todoId: 2,
                orderNo: 2,
                title: "๋‘ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ๋‘ ๋ฒˆ์งธ ํ•  ์ผ",
                date: "2022-02-11",
                endRepeatDate: "2022-02-15",
                repeatDays: {
                  THU: "N",
                  WEN: "N",
                  TUE: "N",
                  SAT: "N",
                  FRI: "N",
                  MON: "N",
                  SUN: "N"
                },
                checkYn: "N"
            },
        ]},
        {
          goalTitle : "์„ธ ๋ฒˆ์งธ ๋ชฉํ‘œ",
          goalId: 3,
          goalOrderNo : 3,
          goalTitleColor : "#0119cb",
          todos : [
               {goalId: 3,
                todoId: 1,
                orderNo: 1,
                title: "์„ธ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ์ฒซ ๋ฒˆ์งธ ํ•  ์ผ",
                date: "2022-02-16",
                endRepeatDate: "2022-02-16",
                repeatDays: {
                  THU: "N",
                  WEN: "N",
                  TUE: "N",
                  SAT: "N",
                  FRI: "N",
                  MON: "N",
                  SUN: "N"
                },
                checkYn: "N"
                },
                {goalId: 3,
                  todoId: 2,
                  orderNo: 2,
                  title: "์„ธ ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ๋‘ ๋ฒˆ์งธ ํ•  ์ผ",
                  date: "2022-02-13",
                  endRepeatDate: "2022-02-19",
                  repeatDays: {
                    THU: "N",
                    WEN: "N",
                    TUE: "N",
                    SAT: "N",
                    FRI: "N",
                    MON: "N",
                    SUN: "N"
                  },
                  checkYn: "N"
              },
          ]},
          {
            goalTitle : "๋„ค ๋ฒˆ์งธ ๋ชฉํ‘œ",
            goalId: 4,
            goalOrderNo : 4,
            goalTitleColor : "#77ab59",
            todos : [
                 {goalId: 4,
                  todoId: 1,
                  orderNo: 1,
                  title: "๋„ค ๋ฒˆ์งธ ๋ชฉํ‘œ์˜ ์ฒซ ๋ฒˆ์งธ ํ•  ์ผ",
                  date: "2022-02-16",
                  endRepeatDate: "2022-02-16",
                  repeatDays: {
                    THU: "N",
                    WEN: "N",
                    TUE: "N",
                    SAT: "N",
                    FRI: "N",
                    MON: "N",
                    SUN: "N"
                  },
                  checkYn: "N"
                  },
            ]},
    ]
    })

     

     

    5. ํ˜„์žฌ ๋‚ ์งœ์˜ ๋ชจ๋“  ํ•  ์ผ ์ˆ˜์ •

     

       Feed์—์„œ ํ•˜๋‹จ์˜ ... ๋ฒ„ํŠผ ํด๋ฆญํ•˜๋ฉด ์˜ค๋Š˜์˜ ํ•  ์ผ๋“ค์„ ํ•œ ๋ฒˆ์— ๋‹ค๋ฃจ๋Š” ๋ฉ”๋‰ด๊ฐ€ ์žˆ๋Š”๋ฐ ์›๋ž˜ ์ด๋ฆ„์€ ๋‚ ์งœ๋ณ„ ํ•  ์ผ ์ˆ˜์ •์ด์—ˆ๋‹ค. ์ด๊ฒƒ๋„ ๊ฐ„ํŽธ ์ž…๋ ฅ์ฒ˜๋Ÿผ ์ด๋ฆ„์„ ๋ฐ”๊พธ์—ˆ๋‹ค. ๋‚ ์งœ๋ณ„ ํ•  ์ผ ์ˆ˜์ •์œผ๋กœ.

       ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์กด ๋ชจ๋‹ฌ์ฒ˜๋Ÿผ ์•„์ด์ฝ˜์„ ๋„ฃ์€ UI๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค. ํ™”๋ฉด ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•ด ...

     

    ์›๋ณธ

     

    ๋ณ€๊ฒฝ

     

     

     

    6. Calendar ๋ˆŒ๋ €์„ ๋•Œ ๋‚ ์งœ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋„๋ก date ์ •๋ณด ๊ฐœ์„ 

     

     

    ๊ฐ ์บ˜๋ฆฐ๋” ๋ชจ๋‹ฌ์—์„œ ๊ฐ๊ฐ ๊ด€๋ฆฌ๋˜๋˜ date๋ฅผ Recoil์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก date ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์„ ๋ณ„๋„๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

     

    const today = new Date();
    const tomorrow = new Date(today);
    const nextDay = new Date(tomorrow.setDate(today.getDate()+1))
    
    
    //์˜ค๋Š˜ ๋‚ ์งœ, ๋‚ด์ผ ๋‚ ์งœ
    export const objDatesData = atom({
      key: 'objDatesData',
      default : {
        "dtToday" : today.toJSON().substring(0, 10),
        "dtTomorrow" : nextDay.toJSON().substring(0, 10),
        "dtFeedCalendarDate" : today,
        "selectedNewDate" : new Date(),
        "selectedNewEndDate" : new Date(),
      }
    
    })

     

     

     

     

    7. ๋ถˆํ•„์š”ํ•œ recoil state ์‚ญ์ œ

     

     

    ์กฑ์ œ๋น„๋‹˜๊ณผ ๋Œ€ํ™” ์ค‘์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ recoil state๊ฐ€ ๋‚œ๋ฌดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•˜๊ณ  

    ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์ง€๋Š” ์ปดํฌ๋„ŒํŠธ ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์—์„œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด atom์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

    ๋‚ ์งœ ์ •๋ณด๋Š” main์—์„œ ํด๋ฆญํ•˜๋Š” ์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‚ ์งœ ๋ณ€๊ฒฝ ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ๋กœ state ์ˆ˜์ •์„ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— recoil๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

    todo๋‚˜ goal์€ ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ ...

    ๋‚˜๋จธ์ง€ ์ž์ž˜ํ•œ readonly ์†์„ฑ์ด๋‚˜ true false๋งŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„(๋ชจ๋‹ฌ์ฐฝ on/off ๊ฐ™์€)์„ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋‹ค์‹œ ์˜ฎ๊ฒจ ๋„ฃ์—ˆ๋‹ค.

     

     

     

    ์ด๋ฒˆ์ฃผ ํ•  ์ผ์€

    fetch ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๋ชจ๋“ˆ์„ ์ญ‰ ๋งŒ๋“ค์–ด๋†“๊ณ  ๊ฐ ์‹คํ–‰ ํ•จ์ˆ˜์— import ์‹œํ‚ค๊ณ 

    ๋ฉ”๋‰ด ์™„์„ฑํ•ด์„œ ๋ผ์šฐํŠธ๋„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ธ๋ฐ

    ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€ ์šฐํ•˜ํ•˜

     

     

    728x90

    ๋Œ“๊ธ€

Designed by Tistory.