From 67ac6a7e95592c3d2393240ad006e604387576ce Mon Sep 17 00:00:00 2001 From: yutent Date: Mon, 14 Aug 2023 19:12:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=89=80=E6=9C=89=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E7=9A=84=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 6 +++--- package.json | 2 +- src/index.js | 13 ++++++++++++- src/router/index.js | 3 +-- src/store.js | 22 ++++++++++++++++++---- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/Readme.md b/Readme.md index b0701c5..7833180 100644 --- a/Readme.md +++ b/Readme.md @@ -17,9 +17,9 @@ ### 一些注意事项 - 路由不支持嵌套, 即``只能出现`1`次。 -- `$router`和`$route`对象, 只注入到一级路由页面, 页面引用的其他`web components`组件, 不会注入。 -- 所有路由页面和组件, 均可使用`getCurrentPage()`获取当前的`$route`对象; 同时可以使用`getRouter()`获取`$router`对象。 -- `$store`对象, 只注入到一级路由页面, 其他组件可使用`getStore()`获取。 +- `$router`对象, 只注入到使用`wkit`创建的组件, 其他地方可以使用`getRouter()`获取`$router`对象。 +- 所有路由页面和组件, 均可使用`getCurrentPage()`获取当前的页面的信息; 也可以用`$router.route`获取。 +- `$store`对象, 只注入到使用`wkit`创建的组件, 其他组件可使用`getStore()`获取。 - `$store`对象为非响应式, 后续可能会支持(时间无限期延后)。 diff --git a/package.json b/package.json index e990cfc..2594e3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wkitd", - "version": "0.0.0", + "version": "1.0.0", "type": "module", "main": "dist/index.js", "files": [ diff --git a/src/index.js b/src/index.js index 1c6af69..beb81dc 100644 --- a/src/index.js +++ b/src/index.js @@ -31,7 +31,6 @@ export function createApp({ } this.mount = function () { let $router = window.__wkitd__.get('$router') - window.foo = $router if (render) { App.prototype.render = render } else { @@ -87,3 +86,15 @@ export function createApp({ } })() } + +export function getStore() { + return window.__wkitd__.get('$store') +} + +export function getRouter() { + return window.__wkitd__.get('$router') +} + +export function getCurrentPage() { + return window.__wkitd__.get('$router')?.route +} diff --git a/src/router/index.js b/src/router/index.js index e3a9a21..6102cb1 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -16,11 +16,10 @@ export function createRouter({ let $router = history() window.__wkitd__.set('$router', $router) - Component.prototype.$router = $router $router.addRoute(routes) function wrapper() { - return $router + Component.prototype.$router = $router } wrapper.beforeEach = $router.beforeEach.bind($router) return wrapper diff --git a/src/store.js b/src/store.js index 17e91c3..abb0ccd 100644 --- a/src/store.js +++ b/src/store.js @@ -7,11 +7,25 @@ import { Component } from 'wkit' export function createStore(obj = {}) { - window.__wkitd__.$store = obj - - Component.prototype.$store = obj + window.__wkitd__.set( + '$store', + new Proxy(obj, { + set(target, prop, value) { + target[prop] = value + return true + } + }) + ) return function () { - // + Object.defineProperty(Component.prototype, '$store', { + get() { + return window.__wkitd__.get('$store') + }, + set(val) { + console.error('Can not replace readonly property $store of Component') + }, + enumerable: false + }) } }