@bronifty/marcs-observable@1.1.2
latest
It is unknown whether this package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




JSR Score
52%
Published
2 years ago (1.1.2)
marcs-observable
Description
This package is a typescript replica of @1marc's observablish-values package used on the frontend masters website for the media player.
Usage
Install Package
pnpm add @bronifty/marcs-observable
Code Example
import React from "react"; import MarcsObservable from "@bronifty/marcs-observable"; // declaring our observable state outside the component to maintain state across re-renders; this could also be done in a store and imported const [ childObservableGetter, childObservableSetter, childObservableSubscriber, ] = MarcsObservable.useState(0); const [parentObservableGetter] = MarcsObservable.useState( () => childObservableGetter() * 2 ); let unsubscribe = () => {}; const App = () => { // subscribing react hook for ui update to observable value update inside a useEffect so it runs once on mount and doesn't get re-assigned every re-render const [input1, setInput1] = React.useState(childObservableGetter()); React.useEffect(() => { unsubscribe = childObservableSubscriber((newVal: any) => { setInput1(newVal); }); return () => { unsubscribe(); }; }, []); // Empty dependency array ensures this effect runs only once on mount const handleInputChange = (e: any) => { childObservableSetter(e.target.value); // Update observable state }; return ( <> <section> <h2>numeric input</h2> <input type="number" value={input1} onChange={handleInputChange} /> <p> childObservableGetter value (childObservableGetter()):{" "} {childObservableGetter()} </p> <p> parentObservableGetter value (parentObservableGetter()):{" "} {parentObservableGetter()} </p> <button onClick={unsubscribe}>unsubscribe from ui updates</button> </section> </> ); }; export default App;
Add Package
deno add jsr:@bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";
Import directly with a jsr specifier
import * as marcs_observable from "jsr:@bronifty/marcs-observable";
Add Package
pnpm i jsr:@bronifty/marcs-observable
pnpm dlx jsr add @bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";
Add Package
yarn add jsr:@bronifty/marcs-observable
yarn dlx jsr add @bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";
Add Package
vlt install jsr:@bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";
Add Package
npx jsr add @bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";
Add Package
bunx jsr add @bronifty/marcs-observable
Import symbol
import * as marcs_observable from "@bronifty/marcs-observable";