[](https://codecov.io/gh/umijs/neeko) [](https://npmjs.org/package/okeen) [  


``bash`
npm i okeen
`typescript
import { model } from 'okeen'
export enum Colors {
green = 'green',
black = 'black',
white = 'white',
blue = 'blue',
}
export default model({
state: {
currentColor: Colors.green,
},
watch: {
currentColor() {
console.log("wow! I'm neeko")
},
},
})
`
`typescript
import { model } from 'okeen'
import color, { Colors } from './color'
export default model({
state: {
userInfo: {
name: '',
age: 0,
id: '',
},
},
computed: {
stringifyUserInfo(): string {
return JSON.stringify(this.userInfo)
},
},
effects: {
fetchUserInfo(id: string) {
color.$update({
currentColor: Colors.blue,
})
this.$update((state) => {
state.userInfo.id = id
state.userInfo.age += 1
})
},
},
watch: {
'userInfo.age': {
immediate: true,
handler: function (a, b, d) {
console.log('newValue: %s, oldValue: %s', a, b)
},
},
},
})
`
`typescript
import * as React from 'react'
import { Button } from 'antd-mobile'
import { observer } from 'okeen/react'
import user from '@/common/stores/user'
import color from '@/common/stores/color'
const App: React.FC = (props) => {
const { fetchUserInfo, stringifyUserInfo } = user
const { currentColor } = color
console.log('render')
return (
<>
userInfo: {stringifyUserInfo}
---------------------------
color: {currentColor}
---------------------------
export default observer(App)
`
` userInfo: {{ user.stringifyUserInfo }} --------------------------- color: {{ color.currentColor }} ---------------------------vue
``
- react@^16.8.0 | react@^17.0.0
- vue@^3.0.0
- Proxy api required by mobx