rxjs와 반응하여 하위 구성 요소에서 상위 구성 요소로 데이터를 보내는 방법은 무엇입니까?
9387 단어 javascriptrxjsreactprogramming
rxjs
라는 환상적인 라이브러리를 사용하여 다른 방식으로 수행하는 방법은 documentation에서 이 라이브러리에 대한 자세한 내용을 읽고 사용 방법을 배울 수 있습니다.오늘 포스트에서는 목표를 달성하기 위해 이 라이브러리를 약간 사용하는 방법을 보여드리겠습니다.
먼저 분명히 합시다. 이 라이브러리는 반응형 프로그래밍을 사용하고 있습니다. 이것이 무엇인지 모른다면 간단히 말해서 반응형 프로그래밍은 Observer Pattern , Iterator Pattern 및 함수형 프로그래밍의 최고의 아이디어를 조합한 것입니다.
이제 문제를 정의해 봅시다.
사용자가 클릭한 횟수를 표시하는 버튼이 필요하지만 상위 구성 요소에서도 클릭 횟수를 표시해야 합니다. 다음과 같이 진행됩니다.
어떻게 할 수 있습니까?
알아보기 위해 코딩해 봅시다.
하위 구성요소
import { useEffect, useState } from "react";
import { Subject } from "rxjs";
// we create and export the observable;
// note the $ character at the end;
// this is the convention for observable variables
export const countObserver$ = new Subject();
export default function CustomButton({
className,
action = () => {},
children,
}) {
const [count, setCount] = useState(0);
useEffect(() => {
// send [count] in our observable
countObserver$.next(count);
}, [count]);// check all the changes of [count]
return (
<button
className={`button ${className}`}
onClick={() => {
setCount(count += 1); // we count the clicks
action();
}}
>
{children} clicks: {count}
</button>
);
}
상위 구성요소
import { useEffect, useState } from "react";
import CustomButton, { countObserver$ } from "../components/customButton";
export default function Example() {
// we create the same variable as the children component
const [count, setCount] = useState(0);
useEffect(() => {
// subscribe the observable, this function returns
// the count that is changing in the child component
countObserver$.subscribe(setCount);
}, []);
const onClick = () => {
console.log("do some action");
};
return (
<div className="is-flex is-flex-direction-column is-align-self-flex-end">
<CustomButton action={onClick} className="is-success mb-3">
Button
</CustomButton>
<label className="label">Clicks: {count}</label>
</div>
);
}
그리고 마지막으로 우리는 다음과 같은 것을 갖게 될 것입니다:
결론
이 접근 방식을 통해 우리는
rxjs
가 할 수 있는 일을 조금 볼 수 있습니다. 이 라이브러리에 대해 더 알고 싶다면 저에게 알려주세요. 다른 예제와 함께 이에 대해 더 게시하겠습니다.예를 들어 카운트 변수에 10을 곱해야 하는 경우 내부에
pipe
함수가 있는 map
를 프로그래밍하고 데이터를 곱하는 것만 큼 간단합니다.countObserver$.pipe(map((data) => data * 10)).subscribe(setCount);
읽어주셔서 감사하고 필요한 사항이 있으시면 언제든지 연락주세요.
Reference
이 문제에 관하여(rxjs와 반응하여 하위 구성 요소에서 상위 구성 요소로 데이터를 보내는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jafetmeza/how-to-send-data-from-a-child-component-to-a-parent-component-in-react-with-rxjs-3fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)