Astro로 프레임워크 간 상태 공유
예를 들어 React 또는 Vue에서와 같이 컨텍스트에만 의존할 수는 없습니다.
이것은 Nano Stores가 매우 편리한 곳입니다.
나는 그들에 대해 읽은 이후로 그들을 시험해보고 싶었습니다.
이 기사에서는 React와 Vue 구성 요소 간에 상태를 공유하는 방법을 살펴봅니다.
이 문서를 따르려면 다음GitHub branch을 시작점으로 삼으십시오.
Nano 저장소 설정
가장 먼저 설치해야 할 것은 실제 Nano Stores 패키지입니다.
npm i nanostores
스토어를 설정하려면 이 기본 패키지가 필요합니다.
계속해서 React 및 Vue 구성 요소에 이미 있는 카운터에 대한 저장소를 생성해 보겠습니다.
stores
라는 폴더를 만들고 counter.js
파일을 추가했습니다.여기에서 작은 값을 저장하는 데 사용할 수 있는 Nano Stores 원자를 활용할 수 있습니다.
import { atom } from 'nanostores';
const initialValue = { value: 0 };
const counter = atom(initialValue);
const increaseCounter = () => counter.set({ value: counter.get().value + 1 });
const decreaseCounter = () => counter.set({ value: counter.get().value - 1 });
export { counter, increaseCounter, decreaseCounter };
보시다시피 이것은 카운터 코드이지만 순수한 JavaScript로 추상화되었습니다.
나는 일을 더 읽기 쉽게 만들기 위해 객관적인 접근 방식을 사용했습니다.
그러나 이 코드 자체로는 아직 많은 작업을 수행하지 않습니다. 이를 위해 React 및 Vue 구성 요소를 조정해야 합니다.
다행스럽게도 두 프레임워크 모두 Nano Stores를 관리하기 위한 깔끔한 후크가 있습니다.
// React nano store
npm i nanostores @nanostores/react
// Vue nano store
npm i nanostores @nanostores/vue
이제 React 카운터를 열고 다음 코드로 조정하십시오.
import { useStore } from '@nanostores/react';
import { counter, increaseCounter, decreaseCounter } from '../store/counter';
export default function React() {
const count = useStore(counter);
const name = 'React';
return (
<div>
<button onClick={decreaseCounter}>-</button>
<pre>{count.value}</pre>
<button onClick={increaseCounter}>+</button>
<p>I'm a {name} component</p>
</div>
);
}
스토어 복제를 사용하기 위해 모든 기능을 추상화했습니다.
여기서 중요한 부분은 카운트를
useStore
로 초기화한다는 것입니다.Vue 구성 요소의 경우 다음과 유사한 작업을 수행할 수 있습니다.
<script>
import { useStore } from '@nanostores/vue';
import { counter, increaseCounter, decreaseCounter } from '../store/counter';
export default {
data() {
const count = useStore(counter);
return {
count,
name: 'Vue',
increaseCounter,
decreaseCounter,
};
},
};
</script>
<template>
<button @click="decreaseCounter">-</button>
<pre>{{ count.value }}</pre>
<button @click="increaseCounter">+</button>
<p>I'm a {{ name }} component</p>
</template>
그리고 그게 다야!
이제 Nano Stores에서 제공하는 완전히 다른 두 프레임워크 간에 공유 상태가 있습니다.
아래 비디오에서 결과 데모를 볼 수 있습니다.
전체 코드 샘플은 GitHub에서 찾을 수 있습니다.
읽어주셔서 감사합니다. 연결해 봅시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(Astro로 프레임워크 간 상태 공유), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/sharing-state-between-frameworks-with-astro-3c0l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)