# oo-graphql-service

> Object oriented graphql service integrate with mobx or redux(coming soon).

Latest version **1.3.5** (published 2019-12-17) · ISC license · 0 weekly downloads

## Install

```sh
npm install oo-graphql-service
pnpm add oo-graphql-service
yarn add oo-graphql-service
bun add oo-graphql-service
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.5 |
| Published | 2019-12-17 |
| First published | 2019-04-09 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 12 |
| Unpacked size | 408.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Neo Wong |
| Maintainers | neoscript99 |
| Keywords | graphql mobx redux |

## Links

- npm: https://www.npmjs.com/package/oo-graphql-service
- Repository: https://github.com/neoscript99/oo-graphql-service
- Homepage: https://github.com/neoscript99/oo-graphql-service#readme
- Issues: https://github.com/neoscript99/oo-graphql-service/issues
- npm.io page: https://npm.io/package/oo-graphql-service

## Dependencies (12)

- [moment](https://npm.io/package/moment.md) ^2.24.0
- [graphql](https://npm.io/package/graphql.md) ^14.0.2
- [numeral](https://npm.io/package/numeral.md) ^2.0.6
- [js-sha256](https://npm.io/package/js-sha256.md) ^0.9.0
- [apollo-link](https://npm.io/package/apollo-link.md) ^1.2.3
- [graphql-tag](https://npm.io/package/graphql-tag.md) ^2.10.0
- [url-template](https://npm.io/package/url-template.md) ^2.0.8
- [apollo-client](https://npm.io/package/apollo-client.md) ^2.4.3
- [string-template](https://npm.io/package/string-template.md) ^1.0.0
- [styled-components](https://npm.io/package/styled-components.md) ^4.3.2
- [apollo-cache-inmemory](https://npm.io/package/apollo-cache-inmemory.md) ^1.3.6
- [apollo-link-batch-http](https://npm.io/package/apollo-link-batch-http.md) ^1.2.3

## Alternatives

- [@reckona/mreact-store](https://npm.io/package/@reckona/mreact-store.md) — 976 weekly downloads
- [regular-state](https://npm.io/package/regular-state.md) — 410 weekly downloads
- [@pacote/flux-actions](https://npm.io/package/@pacote/flux-actions.md) — 65 weekly downloads
- [@pilotlab/lux-debug](https://npm.io/package/@pilotlab/lux-debug.md) — 39 weekly downloads
- [vue-persist-state](https://npm.io/package/vue-persist-state.md) — 19 weekly downloads

## Recent versions

- 1.3.5 (latest) — 2019-12-17
- 1.3.4 — 2019-12-17
- 1.3.3 — 2019-12-03
- 1.3.2 — 2019-11-18
- 1.3.1 — 2019-09-03
- 1.3.0 — 2019-08-20
- 1.2.9 — 2019-08-20
- 1.2.8 — 2019-08-20
- 1.2.7 — 2019-08-16
- 1.2.6 — 2019-08-14
- 1.2.5 — 2019-07-18
- 1.2.4 — 2019-07-17
- 1.2.3 — 2019-06-28
- 1.2.2 — 2019-06-15
- 1.2.1 — 2019-06-11
- … 7 more at https://npm.io/package/oo-graphql-service/versions

## README

# 问题 - 继承GraphqlStore的store类，成员变量未初始化
- 问题表现
```
//this.allList is undefined
return this.allList.find(...);
```
- 解决方法：修改`.babelrc`，`legacy`和`loose`两个配置必须加上
```json
{
  "presets": [
    "@babel/env"
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/plugin-proposal-class-properties", { "loose" : true }]
  ]
}
```

# 优化 - 使用Object.assign
```json
{
  "presets": [],
  "plugins": [
    ["@babel/plugin-proposal-object-rest-spread", { "loose": true, "useBuiltIns": false }]
  ]
}
```
# 转为typescript，`.babelrc`备份
```json
{
  "presets": [
    "@babel/env"
  ],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/plugin-proposal-class-properties", { "loose" : true }],
    ["@babel/plugin-proposal-object-rest-spread", { "loose": true, "useBuiltIns": false }]
  ]
}
```
# mobx在taro中的限制
- 只有在react控件的render中将store对应的属性保存到本地变量，该属性修改时，mobx才会通知observer控件
- 以上的原理是：render中的本地变量，taro会处理到state
- 下面代码中：目前的taro-mobx只会监控currentItem, message，不会监控这些属性下级的变化
  ```javascript
  const {manager: {currentItem, message}} = this.props;
  ```
  - 无监控：`message.text='xxx'`
  - 有监控：`message={...}`

- 下面代码中：没有设置currentItem本地变量，mobx不会更新视图
  ```html
  <View>{this.props.reserve.currentItem.name}</View>
  ```

---
_Source: https://npm.io/package/oo-graphql-service · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
