[Framer X Code] Code Override 만들기

2022. 9. 6. 13:26·Framer

*리액트랑 아주 유사합니다. 코드가 처음이신 분들은 조금 어려울 수 있습니다. 코드 override는 인터렉션, 데이터 처리? 좀 더 동적인 화면을 만드는데 쓰입니다.

 

이 게시글은 https://www.framer.com/developers/guides/overrides/ 를 번역하고 조금 더 자세하게 써놨습니다. (예제 빼고 ㅎ) 코드 Override 생성, 기본 Override 구조, 데이터 공유, 참고사항(about Override, Data from "framer")에 대한 이야기입니다.

 

0. 코드 Override 생성하기

코드 Override를 생성하기 위해서는...

  1. 좌측 사이드바에서 Assets을 선택한다.
  2. 하단에 Code의 + 버튼을 누른다.
  3. New override를 선택한다.
  4. 코드 파일의 이름을 입력한다. ( 파일 이름은 대문자로 시작! )

Framer 내장 코딩 툴에 예시 코드가 나옵니다. 컴포넌트와 마찬가지로 예시 코드는 지워두고...

Override 구조와 import 해야 하는 친구들을 알려드리겠습니다. 

 

1. 가장 기본적인 Override 구조

우선 가장 기본적인 Override 코드는 이렇습니다. 

import type { ComponentType } from "react"

export function overrideName(Component): ComponentType {
	return (props) => {
		return <Component {...props} />
    }
}

우선 react에서 type과 ComponentType를 import 해줍니다. overrideName은 직관적으로 알아서 작명해주시면 됩니다. 코드 컴포넌트와는 다르게 override는 프리뷰에서 볼 수 없습니다. 그래서 override를 씌운 컴포넌트나 화면을 프리뷰 하면서 코드를 수정하면 됩니다. 

코드를 보면 요소 혹은 컴포넌트에 override를 씌우면, 그 컴포넌트의 property를 변경해 반환하는 구조입니다. 

 

2. 데이터 공유하기

데이터를 공유하기 위해 createStore라는 친구를 사용할 겁니다. (왜인지는 모르겠지만 useState를 못쓰더라고요? 아무튼 프레이머에서는 useState 대신 createStore를 씁니다!)

자세한 설명은... https://minny-it.tistory.com/10

import type { ComponentType } from "react"
import { createStore } from "https://framer.com/m/framer/store.js@^0.3.0" //createStore import

const useStore = createStore({ count: 0 }) //store 정의

export function overrideName(Component): ComponentType {
    return (props) => {
        const [store, setStore] = useStore() //store 선언
        return <Component {...props} />
    }
}
  1. createStore를 import 해줍니다.
  2. store에 넣을 데이터를 정의해줍니다.
  3. store에 있는 데이터를 사용할(혹은 변경할) 컴포넌트 혹은 override에 store를 선언해줍니다. (선언하지 않으면 사용 불가)

3. Override 적용하기

아주 간단한 예시로 override를 적용하면 배경이 노란색으로 바뀌도록 만들어보겠습니다. Override.tsx에 이렇게 코드를 써줬습니다.

import type { ComponentType } from "react"
import { createStore } from "https://framer.com/m/framer/store.js@^0.3.0" //createStore import

const useStore = createStore({ background: "#ffff00" }) //store 정의

export function setBackYellow(Component): ComponentType {
    return (props) => {
        const [store, setStore] = useStore() //store 선언
        return (
            <Component
                {...props}
                style={{ backgroundColor: store.background }}
            />
        )
    }
}

그리고 배경을 노란색으로 바꿔주고 싶은 프레임을 선택합니다. 우측 페널 하단에 Code Overrides에 +를 누르고, 파일과 Override를 세팅해줍니다. 

당장의 화면에서는 안 보이지만, 프리뷰로 보면 아래처럼 배경이 노랗게 바뀐 걸 볼 수 있습니다. 

4. 참고

프레이머 코드를 찾아보다 보면 아래 같은 경우가 있는데, 

  1. ComponentType 대신 Override를 framer에서 import 해서 사용하는 경우
  2. createStore 대신 Data를 framer에서 import 해서 사용하는 경우

이는 현재 버전의 프레이머에서 권유하는 방식이 아니기 때문에, 코드는 참고하되 ComponentType과 createStore를 사용하도록! 하는 것이 좋을 것 같습니다. 

Override와 Data는 전면 업데이트 전에 사용하던 방식이기 때문입니다. 그치만... 저거 쓴 코드들을 모두 배제하면... 참고할 코드가 너무 많이 사라짐...


앞에서 말한 것과 같이 override는 대체로 아래와 같은 경우에 사용합니다. 

  1. 동적으로 데이터를 보여줄 경우
  2. 데이터를 처리할 경우
  3. 상태에 따라 컴포넌트에 변경을 줄 경우
  4. 모션 처리를 해줄 경우
  5. 등등... 

override를 잘하면 굳이 리액트를 사용해서 css로 레이아웃 잡고 할 필요가 없어지는 것 같아요 ㅎㅎ (제 원래 의도대로...)

하지만 너무 많이 붙여놓으니까 좀 느려지더라고요! 적절하게 필요한 것만 잘 사용하는 것이.. 중요하겠습니다!! 

'Framer' 카테고리의 다른 글

[Framer X Code] chart.js로 차트 컴포넌트 만들기  (0) 2023.05.23
[Framer X Code] Input값 바로 화면에 출력하기(createStore)  (4) 2023.02.23
[Framer X Code] Override로 Hover & Click Effect 만들기  (0) 2022.10.05
[Framer X Code] Code Component 만들기  (4) 2022.08.22
Framer 입문기  (8) 2022.08.01
'Framer' 카테고리의 다른 글
  • [Framer X Code] Input값 바로 화면에 출력하기(createStore)
  • [Framer X Code] Override로 Hover & Click Effect 만들기
  • [Framer X Code] Code Component 만들기
  • Framer 입문기
현민🐛
현민🐛
개발 - 디자인 - 분석까지 우당탕탕 공부하는 현민입니다!
  • 현민🐛
    우당탕탕 현민 IT 사무소
    현민🐛
  • 전체
    오늘
    어제
    • 분류 전체보기 (23) N
      • Framer (7)
      • UX (7)
      • Design (2) N
      • Data (1)
      • Develop (4)
      • Finance (2)
      • Book (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cursor
    chatGPT
    디자이너
    디자인 포트폴리오
    Google Analytics
    interaction
    CODE
    GitHub Pages
    experience
    프레이머
    컴포넌트
    Chat GPT
    framer
    링크 공유
    생성형
    Override
    HRI
    UX
    오버라이드
    component
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
현민🐛
[Framer X Code] Code Override 만들기
상단으로

티스토리툴바