1.1.6 โข Published 8 months ago
react-state-shed v1.1.6
๐ธ React State Shed
https://github.com/Leeseunghwan7305/react-state-shed
๐ธ ์ค์น
npm i react-state-shed
๐ธ ์ฌ์ฉ๋ฒ
๐ผ Shed๋ฅผ ์์ฑํฉ๋๋ค.
export const counterShed =
createShed <
ShedState >
("count",
{
count: 0,
count2: 0,
count3: 0,
increment: (key) => {
counterShed.setState((prev) => ({ [key]: prev[key] + 1 }));
},
decrement: (key) => {
counterShed.setState((prev) => ({ [key]: prev[key] - 1 }));
},
});
Shed๋ ๊ธฐ๋ณธ์ ์ธ ์ ์ญ ์ํ ๋จ์์ ๋๋ค. createShed ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ญ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ ์ธ๋ ๋ณ์๋ useShed ํ ์ ํตํด ํธ์ถํ ์ ์์ต๋๋ค.
๐ผ useShed๋ฅผ ํธ์ถํฉ๋๋ค.
const { count, increment, decrement } =
useShed < ShedState > ("count", (state) => state);
์ด๋ ์๋ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ ์ฉํ๋ฉด ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ง์ ์ ์์ต๋๋ค.
๐ผ Shed๋ฅผ ์ฌ์ฉํด ์ ์ญ์ผ๋ก Count๋ฅผ ์ฌ๋ฆฌ๊ณ ๋ด๋ฆฌ๋ ์์
Shed ์ํ ํ์ ์ ์ ๋ฐ ์์ฑ
export type ShedState = {
count: number;
count2: number;
count3: number;
increment: (
key: keyof Pick<ShedState, "count" | "count2" | "count3">
) => void;
decrement: (
key: keyof Pick<ShedState, "count" | "count2" | "count3">
) => void;
};
export const counterShed = createShed<ShedState>("count", {
count: 0,
count2: 0,
count3: 0,
increment: (key) => {
counterShed.setState((prev) => ({ [key]: prev[key] + 1 }));
},
decrement: (key) => {
counterShed.setState((prev) => ({ [key]: prev[key] - 1 }));
},
});
์ฑ ์ปดํฌ๋ํธ
function App() {
return (
<div>
<One />
<Two />
<Three />
</div>
);
}
One ์ปดํฌ๋ํธ
const One = () => {
const { count, increment, decrement } =
useShed < ShedState > ("count", (state) => state);
return (
<div style={{ height: "100px", backgroundColor: "green" }}>
์นด์ดํธ 1 : {count}
<button onClick={() => increment("count")}>count1 ์ฌ๋ฆฌ๊ธฐ</button>
<button onClick={() => decrement("count")}>count1 ๋ด๋ฆฌ๊ธฐ</button>
</div>
);
};
export default One;
Two ์ปดํฌ๋ํธ
const Two = () => {
const count = useShed < ShedState > ("count", (state) => state.count2);
return (
<div style={{ height: "100px", backgroundColor: "blue" }}>
์นด์ดํธ 2 : {count}
</div>
);
};
export default Two;
Three ์ปดํฌ๋ํธ
const Three = () => {
const count = useShed < ShedState > ("count", (state) => state.count3);
return (
<div style={{ height: "100px", backgroundColor: "red" }}>
์นด์ดํธ 3 : {count}
</div>
);
};
export default Three;