분류 전체보기

    InputTypes and ArgumentTypes

    InputTypes and ArgumentTypes

    Mutation 추가restaurants/restaurants.resolver.tsimport { Args, Mutation, Query, Resolver } from "@nestjs/graphql";import { Restaurant } from "./entities/restaurants.entity";@Resolver(() => Restaurant)export class RestaurantsResolver { @Query(() => [Restaurant]) restaurants(@Args("veganOnly") veganOnly: boolean): Restaurant[] { return []; } @Mutation(() => Boolean) createRestaurant(): boole..

    type-graphql의 isAbstract 옵션

    type-graphql의 isAbstract 옵션

    { isAbstract: true }type-graphql 라이브러리에서 제공하는 옵션이다.해당 클래스가 GraphQL 스키마에 직접적으로 매핑되지 않고, 추상적인 타입으로만 사용될 수 있음을 나타낸다.즉, 스키마에서는 실제 타입으로 정의되지 않고, 다른 클래스에서 확장이나 참조할 수 있는 추상적인 역할을 수행할 수 있다.일반적으로 @InputType() 또는 @ObjectType() 데코레이터를 사용할 때, isAbstract: true 옵션을 함께 사용하면 클래스가 실제 GraphQL 스키마에 등록되는 것을 방지할 수 있다.이는 스키마에서 중복된 이름의 타입이 생성되는 것을 방지하고, 클래스를 추상적인 개념으로만 유지할 수 있도록 도와준다.

    @InputType과 @ObjectType을 동시에 데코레이터 사용 시 주의할 점

    @InputType과 @ObjectType을 동시에 데코레이터 사용 시 주의할 점

    import { InputType, ObjectType } from 'type-graphql';@InputType()@ObjectType()class Episode { // class fields and methods}위 코드에 Episode 클래스는 동시에 @InputType()과 @ObjectType() 데코레이터가 적용되어 있다.이 경우, 자동으로 생성되는 SDL(Schema Definition Language)에서 이름 충돌이 발생할 수 있다.  type Episode { # fields defined by @ObjectType()}input Episode { # fields defined by @InputType()}SDL로 변환하면 자동으로 클래스 이름으로 type 또는 input 등의 ..

    React에서 렌더링이 발생하는 조건과 렌더링 성능 최적화 방법

    React에서 렌더링이 발생하는 조건과 렌더링 성능 최적화 방법

    🧐 렌더링이 발생하는 조건1. 컴포넌트의 state가 변경되었을 때2. 컴포넌트가 상속받은 props가 변경되었을 때 3. 부모 컴포넌트가 리렌더링이 된 경우 자식 컴포넌트는 모두 리렌더링🧐렌더링 성능 최적화 방법1. hook (useMemo, useCallback)useMemo - 계산의 재실행을 방지useCallback - 함수의 재생성을 방지2. ContextAPI, 기타 상태 관리툴ContextAPI - 컴포넌트 간에 값을 공유, 주로 전역적으로 필요한 값을 다룰 때 사용- 해당 값이 필요한 컴포넌트에만 전달하여 리렌더링 시키고 다른 컴포넌트는 리렌더링 되지 않게 하기recoil - 전역 상태를 관리하기 위한 상태 관리 라이브러리3. windowning - 현재 화면에 보이는 항목만 렌더링 하..