discussionenhancementhelp wanted
Repository metrics
- Stars
- (2,850 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
/**
* Available methods
*
* value
* isValue
* setValue({ item: value })
* withValue({ item: value })
*
* @param {*} key
*/
export function useStore(key) {
let camelKey = _.camelCase(key)
let setKey = _.camelCase(`set_${key}`)
let isKey = _.camelCase(`is_${key}`)
let withKey = _.camelCase(`with_${key}`)
let selected = store.getState()[camelKey]
function setter(value) {
if (typeof value === 'function') {
const newValue = value(selected)
return store.setState({
[camelKey]: { ...selected, ...newValue }
})
}
return store.setState({
[camelKey]: { ...selected, ...value }
})
}
let getter = selected
return {
[camelKey]: getter,
[isKey]: getter,
[setKey]: setter,
[withKey]: setter
}
}
Used
import { useStore } from 'unistore'
export function disconnected() {
log('Ably Events | event: disconnected')
const { setAblySocket } = useStore('ablySocket')
setAblySocket({ status: 'disconnected' })
const { emitter } = useStore('emitter')
emitter.emit('ably', { payload: 'disconnected' })
}
@developit what do you think about this?