React Native Reanimated

MM·2025년 5월 25일
0

ReactNative

목록 보기
4/4
post-thumbnail

왜 자꾸 expo가 crash나는가

worklet을 뺐으니까!!

공식문서를 잘 읽자
공식문서를 잘 읽자...

  const onSelectColor = ({ hex }: { hex: string }) => {
    "worklet";
    console.log(hex);
  };

worklet이란

React Native Reanimated 2에서 사용하는, 특별한 주석 같은 역할을 하는 문자열

worklet이라는 문자열을 함수 첫줄에 넣으면..
-> 해당 함수를 네이티브 스레드에서 실행 가능한 코드(Worklet)로 변환해준다!!

즉, Reanimated2는 네이티브 스레드에서 실행되므로..
-> worklet이 없으면 당연히! js 메인스레드에서 실행되어 죽는다!

잠깐.. 그러면 메인스레드에서 실행하는 건 worklet에서 못 쓴다는 이야기?

다행히 방법이 있었다.
안에서 runOnJs를 써주면 그것만 메인스레드에서 돌린다고.

import { runOnJS } from "react-native-reanimated";

const onSelectColor = ({ hex }: { hex: string }) => {
  "worklet";
  runOnJS(setFillBG)(hex);
};

스레드 잘못 썼다고 냅다 죽는것도 어이가 없다
경고라도 치고 죽어...

profile
중요한 건 꺾여도 그냥 하는 마음

0개의 댓글