Skip to content

Commit

Permalink
Merge pull request #6 from jinzhan/next
Browse files Browse the repository at this point in the history
add Types & `context`
  • Loading branch information
errorrik committed Feb 20, 2022
2 parents 48a5a5d + 1619522 commit 1b3da43
Show file tree
Hide file tree
Showing 18 changed files with 2,564 additions and 2,282 deletions.
14 changes: 13 additions & 1 deletion .babelrc
@@ -1,5 +1,17 @@
{
"presets": [
"@babel/env"
[
"@babel/preset-env",
{
"targets": {
"browsers": [
"> 1%",
"last 2 versions",
"iOS >= 9",
"android >= 5"
]
}
}
]
]
}
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -87,3 +87,4 @@ yarn.lock

*.bak.js
*.bak?.js
types/test/*.js
8 changes: 4 additions & 4 deletions example/computed.js
Expand Up @@ -13,7 +13,7 @@ const wrapper = document.createElement('div');
document.body.appendChild(wrapper);


const App = defineComponent(() => {
const App = defineComponent(context => {
template(`
<div>
<div><strong>Computed Function</strong></div>
Expand All @@ -34,9 +34,9 @@ const App = defineComponent(() => {
return info.get('first') + ' ' + info.get('last');
});

// 虽然不推荐用this,但是内部的this还是支持的
const msg = computed('msg', function () {
return this.data.get('name') + '(' + info.get('email') + ')';
// 使用 context 替代内部的 this
const msg = computed('msg', () => {
return context.data.get('name') + '(' + info.get('email') + ')';
});

const more = computed('more', function () {
Expand Down
20 changes: 10 additions & 10 deletions example/messages.js
Expand Up @@ -17,7 +17,7 @@ const wrapper = document.createElement('div');
document.body.appendChild(wrapper);


const Select = defineComponent(() => {
const Select = defineComponent(context => {
template('<ul><slot></slot></ul>');
const value = data('value', '');
messages({
Expand All @@ -26,41 +26,41 @@ const Select = defineComponent(() => {
},

'UI:select-item-attached': function (arg) {
this.items.push(arg.target);
context.items.push(arg.target);
arg.target.data.set('selectValue', value.get());
},

'UI:select-item-detached': function (arg) {
let len = this.items.length;
let len = context.items.length;
while (len--) {
if (this.items[len] === arg.target) {
this.items.splice(len, 1);
if (context.items[len] === arg.target) {
context.items.splice(len, 1);
}
}
}
});

onInited(function () {
this.items = [];
context.items = [];
});
}, san);


let SelectItem = defineComponent(() => {
let SelectItem = defineComponent(context => {
template('<li on-click="select"><slot></slot></li>');
const value = data('value', '');
method({
select: function () {
this.dispatch('UI:select-item-selected', value.get());
context.dispatch('UI:select-item-selected', value.get());
}
});

onAttached(function () {
this.dispatch('UI:select-item-attached');
context.dispatch('UI:select-item-attached');
});

onDetached(function () {
this.dispatch('UI:select-item-detached');
context.dispatch('UI:select-item-detached');
});
}, san);

Expand Down
4 changes: 2 additions & 2 deletions example/watch.js
Expand Up @@ -12,7 +12,7 @@ import {
const wrapper = document.createElement('div');
document.body.appendChild(wrapper);

const App = defineComponent(() => {
const App = defineComponent(context => {
template(`
<div>
<div><strong>Watch Function</strong></div>
Expand All @@ -39,7 +39,7 @@ const App = defineComponent(() => {
const nameData = data('name', 'myName');

method('rename', function () {
this.data.set('name', 'jinz~' + Math.random());
context.data.set('name', 'jinz~' + Math.random());
// info.set('name', 'jinz~' + Math.random());
});

Expand Down
11 changes: 5 additions & 6 deletions index.js
Expand Up @@ -133,9 +133,8 @@ export function defineComponent(creator, san) {
context = this.__scContext;
contexts.push(context);

// 重新赋值,改变下 this
let creatorAsInstance = defineContext.creator;
creatorAsInstance();
creatorAsInstance(this);

contexts.pop();
context = contexts[contexts.length - 1];
Expand Down Expand Up @@ -360,11 +359,11 @@ class DataProxy {
* @returns {Object} 返回一个带有包装有 this.data 相关数据操作API的对象
*/
export function data(key, value) {
if (typeof key !== 'string') {
if (context.creator) {
return;
}

if (context.creator) {
if (typeof key !== 'string') {
return;
}

Expand Down Expand Up @@ -392,11 +391,11 @@ class ComputedProxy {
}

export function computed(name, fn) {
if (typeof name !== 'string') {
if (context.creator) {
return;
}

if (context.creator) {
if (typeof name !== 'string') {
return;
}

Expand Down

0 comments on commit 1b3da43

Please sign in to comment.