20240729 Recoil

RingKim1·2024년 7월 30일

TIL

목록 보기
63/77

Today

공부

  • Next.js 복습

Recoil

매우 간단한 상태관리 라이브러리

  1. atom(maybe store???)
// app/recoil/atoms.ts

import { atom } from "recoil";

export const userState = atom<{
  email: string;
  name: string;
}>({
  key: "userState",
  default: {
    email: "",
    name: "",
  },
});
  1. provider
// config/RecoilProvider
"use client";

import { RecoilRoot } from "recoil";

export default function RecoilProvider({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return <RecoilRoot>{children}</RecoilRoot>;
}
  1. 설정 및 사용(예시)
  • useRecoilState
"use client";

import { userState } from "@/app/recoil/atoms";
import Link from "next/link";
import { useRecoilState } from "recoil";

export default function UserUpdatePage() {
  const [user, setUser] = useRecoilState(userState);

  return (
    <div>
      <h1>UserUpdatePage</h1>
      <input
        type="email"
        placeholder="Enter your Email"
        value={user.email}
        onChange={(e) =>
          setUser((prev) => ({ ...prev, email: e.target.value }))
        }
      />
      <input
        type="name"
        placeholder="Enter your Name"
        value={user.name}
        onChange={(e) => setUser((prev) => ({ ...prev, name: e.target.value }))}
      />
      <Link href="/users/updated-user">Check Updated Result</Link>
    </div>
  );
}
  • useRecoilValue
"use client";

import { userState } from "@/app/recoil/atoms";
import { useRecoilValue } from "recoil";

export default function UpdatedUserPage() {
  const user = useRecoilValue(userState);
  return (
    <div>
      <h1>Updated User Page</h1>
      <div>Updated User Name : {user.email}</div>
      <div>Updated User Enail : {user.name}</div>
    </div>
  );
}

정리

프로젝트

  • 피그마와 맞춰서 디자인 디테일 작업

Learn

TroubleShooting

문제사항 / 원인

zustand를 사용하여 store를 만들 때 ModalStore로 파스칼케이스 사용

해결


주절주절

운동을 가니 친구가 오늘은 힘이 나지 않는다며 하기 싫다고 했지만 이왕 온거 그냥 하고 가자고...
더 열심히 해도 부족하다

profile
커피는 콜드브루

0개의 댓글