react-ob
TypeScript icon, indicating that this package has built-in type declarations

3.0.2 • Public • Published

react-ob

Only use observer do react state, only 0.4kb in gzip.

start

  1. Add ObProvider in App.tsx
<ObProvider>
  <App />
</ObProvider>
  1. Use useChannel and Ob in Page
function Page() {
  const value = useChannel(0);

  return (
    <div>
      <Ob channels={[value]}>{(value) => <div>num: {value}</div>}</Ob>
      <button onClick={() => value.set(value() + 1)}></button>
    </div>
  );
}
  1. Use global channel:
const name = channel("");

function UserPage() {
  return (
    <Subscribe channels={[name]}>
      {(_name) => <div>User name: {_name}</div>}
    </Subscribe>
  );
}

function UserSettingPage() {
  return (
    <div>
      <div> setting username:</div>
      <input onChange={(e) => name.set(e.target.value)} />
    </div>
  );
}
  1. Use localStorage channel:
const name = channelWithStorage("user-name", "");

function UserPage() {
  return (
    <Subscribe channels={[name]}>
      {(_name) => <div>User name: {_name}</div>}
    </Subscribe>
  );
}

function UserSettingPage() {
  return (
    <div>
      <div> setting username:</div>
      <input onChange={(e) => name.set(e.target.value)} />
    </div>
  );
}

Readme

Keywords

none

Package Sidebar

Install

npm i react-ob

Weekly Downloads

6

Version

3.0.2

License

none

Unpacked Size

15.5 kB

Total Files

11

Last publish

Collaborators

  • ymblender