지금까지 저는 리콜에 대해 이야기했습니다.
개시하다
Recoil은 이렇게 썼어요.useState와 무엇이 다릅니까?이런 부분을 이 기사에서 잡아낸다면 영광입니다.
잘못된 점이 있으면 메시지를 남겨 주세요.
이른바 Recoil
Recoil은 FaceBook사(현재 META사)가 개발한 상태 관리 라이브러리다.
배경은 Context API의 제약 및 문제를 해결하기 위한 것입니다.
Recoil 주요 기능
Recoil Root은 무엇입니까?
Recoil Root은 Recoil을 사용하기 위해 정의된 것이며 추천하는 설정 장소는 루트 구성 요소입니다.
이것을 정의하면 해당 아이의 어셈블리에서 Recoil을 사용할 수 있습니다.
import { RecoilRoot } from "recoil"
import { Components } from "./components"
function App()
return (
<RecoilRoot>
<Components />
</RecoilRoot>
);
}
아톰이란?
간단하게 말하면 Atom은 상태의 단위이다
useState와 같은 값이 바뀌면 구성 요소가 다시 나타납니다.
키는 유일해야 합니다.default에 초기 값을 저장합니다
// 例 名前を入力するようなフォームの場合
export const nameState = atom<string>({
key: "nameState"
default: ""
})
// 例 数字を持つ場合
export const countState = atom<number>({
key: "countState"
default: 0
})
셀렉터가 뭐예요?
Selector는 Atom 값의 가공 값을 반환하거나 state 값을 다시 반환할 수 있습니다.
이것은 Atom과 마찬가지로 키는 반드시 하위 부호여야 한다.
import { selector } from "recoil"
import { countState } from "./Atom.ts"
export const countSelector = selector({
key: "countSelector"
get: ({ get }) => {
// 定義したatomの値をgetで呼び出す
const count = get(countState)
return count + 1
}
});
useRecoilState는 무엇입니까?
useRecoilState는Atom의 값을 얻어 업데이트할 수 있는 hooks입니다. useState와 마찬가지로 첫 번째 요소는 상태 값이고 두 번째 요소는 set 함수로 상태 값을 업데이트할 수 있습니다.
import { useRecoilState } from "recoil"
import { CountState } from "./Atom.ts"
export const ComponentA = () => {
const [count, setCount ] = useRecoilState(CountState)
// useRecoilStateを使ってatomを呼び出す
const onClick = () => {
setCount(count + 1)
}
return (
<button onClick={onClick}>
カウント
</button>
)
}
useSetRecoilState는 무엇입니까?
useSetRecoilState는 간단하게 set 함수만 실행하는 함수입니다.
상황에 따라 구분해서 사용하려면 예를 들어 이component에서 값을 얻기 싫고 값만 바꾸려고 하는 등 활발하게 활동할 수 있다.
const setName = useSetRecoilState(nameState)
const changeName = (e: React.ChangeEvent<HTMLInput>) => {
setName(e.target.value);
};
return <input onChange={onChangeName} placeholder="名前" />
useRecoil Value는 무엇입니까?
useRecoilValue는useSetRecoilState와 달리 값만 호출하는 함수입니다
변경된 tom의 값, selector 가공의 값을 호출할 때 주로 사용합니다.
selector 가공 예로 입력한 문자 수를 사용하고component로 참조할 때
export const nameState= atom<string>({
key: "nameState",
default: ""
});
export const textLengthSelector = selector({
key: "textLengthSelector",
get: ({ get }) => {
const text = get(nameState)
return text.length
})
const textCount = useRecoilValue(textLengthSelector)
return <div>入力した文字数は{textCount}</div>
useResetRecoilState는 무엇입니까?
useResetRecoilState는 뇌사에 다음 코드를 적은 것처럼 상태를 기본값으로 복원하는 함수입니다.
before
const [name, setName] = useRecoilState(nameState)
const resetButton = () => {
setName("")
}
return <button onClick={resetNameState}>リセット</button>
이렇게 리셋 단추를 누르면form의 값을 리셋하는 처리가 있으면 set 함수를 사용하여 상기 코드로 실행하면 쓸모없는 재현이 발생합니다.그러나useResetRecoilState를 사용하면 쓸데없는 렌더링이 일어나지 않습니다.after
const [name, setName] = useRecoilState(nameState)
const resetNameState = useResetRecoilState(nameState)
return <button onClick={resetNameState}>リセット</button>
최후
여기까지 읽어주셔서 감사합니다.
'컨디션 관리가 이런 거구나'이런 느낌으로 읽게 되면 영광인 것 같아요.
Reference
이 문제에 관하여(지금까지 저는 리콜에 대해 이야기했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nisitin/articles/259888ba378b0c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)