why not using useSyncExternalStoreWithSelector ?
```
import { listenKeys } from 'nanostores'
import { useCallback, useSyncExternalStore } from 'react'
export function useStore(store, opts = {}) {
let subscribe = useCallback(
onChange =>
opts.keys
? listenKeys(store, opts.keys, onChange)
: store.listen(onChange),
[opts.keys, store]
)
let get = store.get.bind(store)
return useSyncExternalStore(subscribe, get, get)
}
```
isn't it better to use useSyncExternalStoreWithSelector to replace listening for keys ?
example
```
const atom = Atom({name: 'jo', age : 21})
const age = useStore(atom, (state)=> state.age) // and only re-renders when the age is changes
```
2 条评论