Skip to content

Commit 522ed12

Browse files
committed
fix(ios): 在注入之前创建injectContainer
1 parent bdcc221 commit 522ed12

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

packages/ioc/src/inject.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ export const Injectable =
3434
export const Inject =
3535
<T>(tag: Tag, unNew = false, param?: T): PropertyDecorator =>
3636
(target, propertyKey) => {
37+
let pool = poolContainer.use(target)
38+
if (isBoolean(pool)) {
39+
pool = new Container<PropertyKey, unknown>()
40+
}
41+
pool.bind(propertyKey, undefined)
42+
poolContainer.bind(target, pool)
43+
3744
injectContainer.on(tag, (instance) => {
3845
if (!instance) {
3946
logger.error(` ${tag.toString()} injectable model not existence`)
@@ -49,11 +56,8 @@ export const Inject =
4956
}
5057
value = construct(instance, parameter)
5158
}
52-
let pool = poolContainer.use(target)
53-
if (isBoolean(pool)) {
54-
pool = new Container<PropertyKey, unknown>()
59+
if (!isBoolean(pool)) {
60+
pool.bind(propertyKey, value)
5561
}
56-
pool.bind(propertyKey, value)
57-
poolContainer.bind(target, pool)
5862
})
5963
}

packages/ioc/src/middleware/middleware.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,20 @@ const middlewareRouteContainer = new Container<
3434
const propertyMiddleware =
3535
(tag: Tag): PropertyDecorator =>
3636
(target, propertyKey) => {
37+
let pool = poolContainer.use(target)
38+
if (isBoolean(pool)) {
39+
pool = new Container<PropertyKey, unknown>()
40+
}
41+
pool.bind(propertyKey, undefined)
42+
poolContainer.bind(target, pool)
3743
middlewarePropertyContainer.on(tag, (middleware) => {
3844
if (!middleware) {
3945
logger.error(`${tag.toString()} type property middleware no exists`)
4046
return
4147
}
42-
let pool = poolContainer.use(target)
43-
if (isBoolean(pool)) {
44-
pool = new Container<PropertyKey, unknown>()
48+
if (!isBoolean(pool)) {
49+
pool.bind(propertyKey, middleware)
4550
}
46-
pool.bind(propertyKey, middleware)
47-
poolContainer.bind(target, pool)
4851
})
4952
}
5053

packages/shared/src/construct.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Container } from './container'
2-
import { isBoolean } from './type'
2+
import { isBoolean, isUndef } from './type'
33

44
export const poolContainer = new Container<
55
Object,
@@ -10,8 +10,10 @@ export const construct = (target: Function, params: unknown[] = []) => {
1010
const instance = Reflect.construct(target, params)
1111
const instanceContainer = poolContainer.use(target.prototype)
1212
if (!isBoolean(instanceContainer)) {
13-
for (let key in instance) {
14-
if (instance.hasOwnProperty(key)) {
13+
for (let [key, value] of instanceContainer.getPool().entries()) {
14+
if (isUndef(value)) {
15+
defineProperty(instance, key, value)
16+
} else {
1517
instanceContainer.on(key, (inject) => {
1618
defineProperty(instance, key, inject)
1719
})

packages/shared/src/type.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
export const isBoolean = (value: any): value is boolean =>
22
typeof value === 'boolean'
3+
4+
export const isUndef = (value: any): value is undefined =>
5+
typeof value === 'undefined'

0 commit comments

Comments
 (0)