개발자
요즘 프론트엔드 soildJS 같은 프레임워크에서 언급되는 시그널은 무엇인가요? redux의 store처럼 DOM과 상관없는 스토어에 값을 저장하는것과 비슷한 맥락인가요?
답변 3
https://codesandbox.io/embed/redux-signal-demo-xomp04?file=/src/lib/redux-signal.js&codemirror=1 이론적으로는 많은 글들이 있으나 저는 해당 예시가 제일 심플해서 가져옵니다. 거칠게 풀자면 signal은 useState+uesRef+useMemo이며 상태가 변하면 지속적으로 rendering되는 부분을 줄여준다고 보시면 될거 같습니다.
익명
작성자
2023년 04월 13일
오와 감사합니다!!
``` var a = null var b = 1; var c = 2 ; a = b + c b = 3 c = 4 ``` 위의 식에서 b또는 c의 값이 바뀔 때 자동으로 a = b + c가 재호출되는 것을 반응형 프로그래밍이라고 합니다 출처 : ryan carniato 이것을 구현한 대표적인 라이브러리로는 svelte가 있습니다 여기서 a, b, c를 signal이라고 부릅니다 정리하면 1. 시그널은 일종의 값(value)이다 2. 값이 변한다 -> 그 값과 연관된 로직이 자동으로 호출된다 말씀하신 solid.js는 시그널을 객체로 구현합니다. 아래는 초기화 코드입니다
1const s: SignalState<T | undefined> = {
2 value,
3 observers: null,
4 observerSlots: null,
5 comparator: options.equals || undefined
6 };
7// value가 바뀌면 -> observers가 차례로 실행됨 (observer는 배열이므로 배열을 순회하면서 등록된 함수를 호출함)
SolidJS에서의 시그널(Signal)은 리액티브 프로그래밍 개념 중 하나로, 변화를 감지할 수 있는 값의 래퍼입니다. 시그널은 DOM과 상관없는 스토어에 값을 저장하는 것과 비슷한 맥락이지만, 좀 더 가볍고 미세한 단위의 상태 관리를 제공합니다. 시그널은 값의 변화를 추적하고 이를 자동으로 다른 의존하는 연산이나 컴포넌트에 전달하는데 사용됩니다. SolidJS의 시그널은 빠르고 가볍게 작동하며, 상태 변경에 따른 렌더링 최적화를 지원합니다. #1 예를 들어, SolidJS에서 시그널을 사용하면 다음과 같습니다. 여기에서 ' createSignal ' 함수를 사용하여 ' count '라는 시그널을 생성합니다. ' setCount '함수를 사용하여 ' count '의 값을 변경할 수 있습니다. ' count() '를 사용하여 시그널의 현재 값을 읽을 수 있습니다. Redux의 store와 달리, 시그널은 전역 상태 관리에 초점을 맞추지 않고, 더 작은 단위의 로컬 상태 관리를 제공합니다. 또한, 시그널은 자동으로 렌더링 최적화를 지원하기 때문에, 성능에 더 좋은 영향을 줄 수 있습니다. 결론적으로, 시그널은 리액티브 프로그래밍에 기반한 미세한 상태 관리를 제공하며, 성능 최적화를 위해 SolidJS와 같은 프레임워크에서 사용됩니다.
1#1
2import { createSignal } from "solid-js";
3
4function Counter() {
5 const [count, setCount] = createSignal(0);
6
7 return (
8 <div>
9 <button onClick={() => setCount(count() + 1)}>Increment</button>
10 <p>Count: {count()}</p>
11 </div>
12 );
13}
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!