Skip to content

Commit

Permalink
feat(hippy-vue): support once modifier
Browse files Browse the repository at this point in the history
  • Loading branch information
zoomchan-cxj committed Aug 10, 2022
1 parent 66852f5 commit 58f4d10
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 33 deletions.
2 changes: 1 addition & 1 deletion docs/hippy-vue/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ HippyVue 提供了 `beforeLoadStyle` 的 Vue options 勾子函数,供开发者

# 转 Web

未来 Hippy 会采用 `WebRenderer` 方案,增加基于公共通信协议的转换层,业务开发者可以使用同一套 Hippy 语法开发的业务代码,映射成 JS 实现的组件和模块,上层无论使用 React,Vue 或者其他第三方框架,都可以实现兼容,敬请期待
Hippy 全新 [`WebRenderer`](web/integration.md) 方案,增加基于公共通信协议的转换层,业务开发者可以使用同一套 Hippy 语法开发的业务代码,映射成 JS 实现的组件和模块,上层无论使用 React,Vue 或者其他第三方框架,都可以实现兼容,可参考
3 changes: 0 additions & 3 deletions examples/hippy-vue-demo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
"name": "hippy-vue-demo",
"version": "2.0.0",
"private": true,
"main": "./src/main.js",
"webMain": "./src/main-web.js",
"nativeMain": "./src/main-native.js",
"author": "XQ Kuang <[email protected]>",
"license": "Apache-2.0",
"description": "Demo app for hippy-vue",
"repository": "https://github.com/Tencent/Hippy/tree/master/examples/hippy-vue-demo",
"scripts": {
"serve": "cross-env-os os=\"Windows_NT,Linux\" minVersion=17 NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve",
"build": "cross-env-os os=\"Windows_NT,Linux\" minVersion=17 NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build",
"lint": "cross-env-os os=\"Windows_NT,Linux\" minVersion=17 NODE_OPTIONS=--openssl-legacy-provider vue-cli-service lint",
"hippy:debug": "hippy-debug",
"hippy:dev": "cross-env-os os=\"Windows_NT,Linux\" minVersion=17 NODE_OPTIONS=--openssl-legacy-provider hippy-dev -c ./scripts/hippy-webpack.dev.js",
Expand Down
15 changes: 0 additions & 15 deletions examples/hippy-vue-demo/src/main.js

This file was deleted.

27 changes: 13 additions & 14 deletions packages/hippy-vue/src/runtime/modules/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,32 @@ function remove(event, handler, capture, _target) {
(_target || target).removeEventListener(event);
}

function add(event, handler, once, capture) {
// eslint-disable-next-line no-unused-vars
function add(event, handler, capture, passive, params) {
if (capture) {
return;
}
if (once) {
const oldHandler = handler;
const _target = target; // save current target element in closure
handler = (ev) => {
const res = arguments.length === 1
? oldHandler(ev)
: oldHandler(...arguments);
if (res !== null) {
remove(event, null, null, _target);
}
};
}
target.addEventListener(event, handler);
}

function createOnceHandler(event, handler, capture) {
const _target = target; // save current target element in closure
return function onceHandler() {
const res = handler(...arguments);
if (res !== null) {
remove(event, onceHandler, capture, _target);
}
};
}

function updateDOMListeners(oldVNode, vNode) {
if (!oldVNode.data.on && !vNode.data.on) {
return;
}
const on = vNode.data.on || {};
const oldOn = oldVNode.data.on || {};
target = vNode.elm;
updateListeners(on, oldOn, add, remove, vNode.context);
updateListeners(on, oldOn, add, remove, createOnceHandler, vNode.context);
}

export default {
Expand Down

0 comments on commit 58f4d10

Please sign in to comment.