1.0.47 • Published 2 years ago

@selkt/react v1.0.47

Weekly downloads
15
License
-
Repository
-
Last release
2 years ago

React hooks

A hook to use values from selectable stores

import { MutableSelectable } from '@selkt/core'
import { useSelectable } from '@selkt/react'

interface User {
  name: string
  age: string
}

let store = new MutableSelectable({
  likes: 0,
  user: undefined as User | undefined,
})

export default function App() {
  const username = useSelectable(store, (state) => state.user.name) || 'Anon'
  /* This component will only update when likes gets over 50 or the username changes */
  const disabled = useSelectable(store, (state) => state.likes > 50)

  function login() {
    store.set((state) => {
      state.user = {
        name: 'Lorem Ipsum',
        age: '1000 years old',
      }
    })
  }

  return (
    <div>
      <h1>{username}</h1>
      <Suspense fallback={<div>Login</div>}>
        <Profile />
      </Suspense>
      <div>
        <button onClick={login}>Login</button>
      </div>
      <div>
        <LikesButton disabled={disabled} />
      </div>
    </div>
  )
}

function Profile() {
  let username = useSelectableSuspense(store, (state) => state.user.name)

  return <div>User {username}</div>
}

function LikesButton({ disabled = false }) {
  const likes = useSelectable(store, (state) => state.likes)
  return (
    <button
      disabled={disabled}
      onClick={(e) =>
        store.set((state) => {
          state.likes++
        })
      }
    >
      Likes {likes}
    </button>
  )
}
1.0.47

2 years ago

1.0.46

2 years ago

1.0.45

2 years ago

1.0.40

2 years ago

1.0.44

2 years ago

1.0.42

3 years ago

1.0.39

3 years ago

1.0.28

3 years ago

1.0.33

3 years ago

1.0.32

3 years ago

1.0.31

3 years ago

1.0.34

3 years ago

1.0.26

4 years ago

1.0.25

4 years ago

1.0.22

4 years ago

1.0.24

4 years ago

1.0.23

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.9

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.2

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago