Skip to content

Commit

Permalink
Merge pull request #2788 from nanjingboy/fix/mobx
Browse files Browse the repository at this point in the history
fix(mobx):支付宝 & RN 端问题修复
  • Loading branch information
Chen-jj authored Apr 16, 2019
2 parents d4e3ef5 + 556c31f commit bf1b242
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 113 deletions.
3 changes: 3 additions & 0 deletions packages/taro-cli/templates/mobx/pkg
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
"eslint-config-taro": "<%= version %>",
"eslint-plugin-react": "^7.8.2",
"eslint-plugin-import": "^2.12.0",
"stylelint": "^10.0.0",
"stylelint-config-taro-rn": "<%= version %>",
"stylelint-taro-rn": "<%= version %>",
"eslint-plugin-taro": "<%= version %>"<% if (typescript) {%>,
"@typescript-eslint/parser": "^1.6.0",
"typescript": "^3.0.1"<%}%>
Expand Down
55 changes: 34 additions & 21 deletions packages/taro-mobx-common/src/inject.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,48 @@
import { getStore } from './store'

/**
* Store Injection
*/
function createStoreInjector (grabStoresFn, injectNames, Component) {
function createStoreInjector (grabStoresFn, sourceComponent, injectNames, { Component, createElement }) {
let displayName =
'inject-' +
(Component.displayName ||
Component.name ||
(Component.constructor && Component.constructor.name) ||
(sourceComponent.displayName ||
sourceComponent.name ||
(sourceComponent.constructor && sourceComponent.constructor.name) ||
'Unknown')
if (injectNames) {
displayName += '-with-' + injectNames
}
if (injectNames) displayName += '-with-' + injectNames

class Injector extends Component {
static isMobxInjector = true
static displayName = displayName
constructor (props) {
static config = sourceComponent.config || {}

render () {
let newProps = {}
for (let key in props) {
if (props.hasOwnProperty(key)) {
newProps[key] = props[key]
for (let key in this.props) {
if (this.props.hasOwnProperty(key)) {
newProps[key] = this.props[key]
}
}
const additionalProps = grabStoresFn(getStore() || {}, newProps) || {}
const additionalProps = grabStoresFn(getStore() || {}, newProps, this.context) || {}
for (let key in additionalProps) {
newProps[key] = additionalProps[key]
}
super(Object.assign(...arguments, newProps))
return createElement(sourceComponent, newProps)
}

componentDidShow () {
const { componentDidShow } = sourceComponent.prototype
if (typeof componentDidShow === 'function') {
componentDidShow()
}
}

componentDidHide () {
const { componentDidHide } = sourceComponent.prototype
if (typeof componentDidHide === 'function') {
componentDidHide()
}
}
}

return Injector
}

Expand All @@ -50,19 +62,20 @@ function grabStoresByName (storeNames) {
}
}

export function inject (/* fn(stores, nextProps) or ...storeNames */) {
export function inject (/* fn(stores, nextProps) or ...storeNames, { Component, createElement } */) {
let grabStoresFn
let platformSpecialParams = arguments[arguments.length - 1]
if (typeof arguments[0] === 'function') {
grabStoresFn = arguments[0]
return function (componentClass) {
return createStoreInjector(grabStoresFn, null, componentClass)
return createStoreInjector(grabStoresFn, componentClass, null, platformSpecialParams)
}
} else {
const storeNames = []
for (let i = 0; i < arguments.length; i++) storeNames[i] = arguments[i]
for (let i = 0; i < arguments.length - 1; i++) storeNames[i] = arguments[i]
grabStoresFn = grabStoresByName(storeNames)
return function (componentClass) {
return createStoreInjector(grabStoresFn, storeNames.join('-'), componentClass)
return createStoreInjector(grabStoresFn, componentClass, storeNames.join('-'), platformSpecialParams)
}
}
}
}
12 changes: 10 additions & 2 deletions packages/taro-mobx-h5/src/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
export { inject, observer } from '@tarojs/mobx-common'
import { Component } from '@tarojs/taro-h5'
import { createElement } from 'nervjs'
import { inject as originInject } from '@tarojs/mobx-common'

export { default as Provider } from './Provider'
export function inject () {
return originInject(...arguments, { Component, createElement })
}

export { observer } from '@tarojs/mobx-common'

export { default as Provider } from './Provider'
13 changes: 11 additions & 2 deletions packages/taro-mobx-rn/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
export { inject, observer } from '@tarojs/mobx-common'
export { default as Provider } from './Provider'
import { Component } from '@tarojs/taro-rn'
import { createElement } from 'react'
import { inject as originInject } from '@tarojs/mobx-common'

export function inject () {
return originInject(...arguments, { Component, createElement })
}

export { observer } from '@tarojs/mobx-common'

export { default as Provider } from './Provider'
4 changes: 2 additions & 2 deletions packages/taro-mobx/src/inject.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ function createStoreInjector (grabStoresFn, injectNames, Component) {
class Injector extends Component {
static isMobxInjector = true
static displayName = displayName
constructor (props) {
super(Object.assign(...arguments, mapStoreToProps(grabStoresFn, props)))
constructor (props, isPage) {
super(Object.assign(...arguments, mapStoreToProps(grabStoresFn, props)), isPage)
}

componentWillMount () {
Expand Down
92 changes: 6 additions & 86 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -951,14 +951,6 @@ any-observable@^0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"

anymatch@^1.3.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==
dependencies:
micromatch "^2.1.5"
normalize-path "^2.0.0"

anymatch@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
Expand Down Expand Up @@ -1175,28 +1167,6 @@ aws4@^1.8.0:
version "1.8.0"
resolved "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"

babel-cli@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE=
dependencies:
babel-core "^6.26.0"
babel-polyfill "^6.26.0"
babel-register "^6.26.0"
babel-runtime "^6.26.0"
commander "^2.11.0"
convert-source-map "^1.5.0"
fs-readdir-recursive "^1.0.0"
glob "^7.1.2"
lodash "^4.17.4"
output-file-sync "^1.1.2"
path-is-absolute "^1.0.1"
slash "^1.0.0"
source-map "^0.5.6"
v8flags "^2.1.1"
optionalDependencies:
chokidar "^1.6.1"

babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
Expand Down Expand Up @@ -1687,7 +1657,7 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"

babel-polyfill@6.26.0, babel-polyfill@^6.26.0:
babel-polyfill@6.26.0:
version "6.26.0"
resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
dependencies:
Expand Down Expand Up @@ -2336,22 +2306,6 @@ cheerio@0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"

chokidar@^1.6.1:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=
dependencies:
anymatch "^1.3.0"
async-each "^1.0.0"
glob-parent "^2.0.0"
inherits "^2.0.1"
is-binary-path "^1.0.0"
is-glob "^2.0.0"
path-is-absolute "^1.0.0"
readdirp "^2.0.0"
optionalDependencies:
fsevents "^1.0.0"

chokidar@^2.0.0, chokidar@^2.0.2:
version "2.0.4"
resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
Expand Down Expand Up @@ -2666,7 +2620,7 @@ commander@2.17.x, commander@~2.17.1:
version "2.17.1"
resolved "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"

commander@^2.11.0, commander@^2.14.1, commander@^2.15.1, commander@^2.18.0, commander@^2.9.0:
commander@^2.14.1, commander@^2.15.1, commander@^2.18.0, commander@^2.9.0:
version "2.19.0"
resolved "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"

Expand Down Expand Up @@ -3047,7 +3001,7 @@ conventional-recommended-bump@^1.2.1:
meow "^3.3.0"
object-assign "^4.0.1"

convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.5.0, convert-source-map@^1.5.1:
convert-source-map@^1.1.0, convert-source-map@^1.1.1, convert-source-map@^1.5.1:
version "1.6.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
dependencies:
Expand Down Expand Up @@ -4805,23 +4759,10 @@ fs-minipass@^1.2.5:
dependencies:
minipass "^2.2.1"

fs-readdir-recursive@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==

fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"

fsevents@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4"
integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==
dependencies:
nan "^2.9.2"
node-pre-gyp "^0.10.0"

fsevents@^1.2.2:
version "1.2.4"
resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
Expand Down Expand Up @@ -5231,7 +5172,7 @@ graceful-fs@4.1.11:
version "4.1.11"
resolved "http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"

graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6:
version "4.1.15"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"

Expand Down Expand Up @@ -7231,7 +7172,7 @@ methods@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"

micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7:
micromatch@^2.3.11, micromatch@^2.3.7:
version "2.3.11"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
Expand Down Expand Up @@ -7631,7 +7572,7 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"

normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
Expand Down Expand Up @@ -7935,15 +7876,6 @@ osenv@0, osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"

output-file-sync@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
dependencies:
graceful-fs "^4.1.4"
mkdirp "^0.5.1"
object-assign "^4.1.0"

p-cancelable@^0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
Expand Down Expand Up @@ -10714,11 +10646,6 @@ use@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"

user-home@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=

util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
Expand Down Expand Up @@ -10758,13 +10685,6 @@ uuid@^3.0.1, uuid@^3.3.2:
version "3.3.2"
resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"

v8flags@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=
dependencies:
user-home "^1.1.1"

vali-date@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6"
Expand Down

0 comments on commit bf1b242

Please sign in to comment.