React 반응형 데이터
React에서는 반응형 데이터를위해 setState
를 이용한다. 그런데 클래스 인스턴스로 데이터를 관리하고싶은 경우 인스턴스 자체의 변경점이 지정되며, 인스턴스내의 데이터를 변경 하고싶은경우 spread방식을 이용하기때문에 불편하다.
React에서 proxy기반의 상태(반응형)관리 해주는 Valtio라는 라이브러리를 발견했다. 해당 방법을 이용하면 쉽게 클래스 인스턴스를 관리 할 수 있다. Vue3에서 reactive (or ref)와 비슷한 느낌인것 같다.
그러면 아래와같이 직관적으로 반응형 데이터를 만들어줄 수 있고 변경또한 객체에 메시지를 전달하여 해결할 수 있다.
예제코드
import React, {useEffect, useState} from "react";
import {proxy, useSnapshot} from 'valtio'
class User {
public id = 1
public name = "호돌맨"
public changeName(name: string) {
this.name = name
}
}
const user = proxy<User>(new User())
export default function () {
useSnapshot(user)
return (
<div className="App">
<p>{user.id}</p>
<p>{user.name}</p>
<button onClick={() => user.changeName("호돌순")}>이름변경</button>
</div>
);
}
useSnapshot
개발자 입장에서 이게 왜 필요한지 아직 잘 모르겠다. 저런 hook을 걸지 않고 더 쉽게 사용할 수 있는 use-state-proxy라는 라이브러리도 있다. 다만 별이 별로 없어서..ㅎ
전역적으로도 상태관리를 가져갈 수 있는 등.. 궁금한 점이 많다. 계속 살펴보는중
관련링크
'개발 > Frontend' 카테고리의 다른 글
Next.js 서버 실행시 host가 private ip로 bind되는 경우 (1) | 2024.06.27 |
---|---|
typescript, babel, jest 모듈 환경 구성 (0) | 2022.04.23 |
Vue.js 간단한 플러그인 만들기 (0) | 2020.11.20 |
webpack에서 splitChunks 무시하기 (Vue.js) (0) | 2019.11.27 |