Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【新语法讨论】hook 语法的意见收集 #1849

Closed
Gcaufy opened this issue Oct 18, 2018 · 5 comments
Closed

【新语法讨论】hook 语法的意见收集 #1849

Gcaufy opened this issue Oct 18, 2018 · 5 comments
Labels
2.0.x Version 2.0.x Discussion

Comments

@Gcaufy
Copy link
Collaborator

Gcaufy commented Oct 18, 2018

在 2.0 中,会新加一个 hook 机制,用于预埋的一些钩子函数。但这些函数还要与生命周期钩子函数区分开来。
比如说 在 2.0 中, setData 不再对用户透明,用户可以借助这些 hook 函数对 setData 数据进行进一步处理。初步语法为:

wepy.page({  
  hooks: {
    // Page 级别 hook, 只对当前 Page 的 setData 生效。
    'before-setData': function (data) {
      if (somecondition) {
        return false;  // 撤销此次 setData 操作
      }
      data.time = +new Date();  // 第次 setData 时都添加 time 字段
      return data;
    }
  }
});


wepy.app({ 
  hooks: {
    // App 级别 hook,对整个 App 生效
    // 同时存在 Page hook 和 App hook 时,优先执行 Page hook,返回值再交由 App hook 处理
    'before-setData': function (data) {
      console.log('本次 setData 数据是:');
      console.log(data);
      return data;
    }
  }
});

欢迎大家一起参考讨论,给出更好的意见。最终实现方案将使用本 issue 讨论结果。

@Gcaufy Gcaufy added 2.0.x Version 2.0.x Discussion labels Oct 18, 2018
@ghost
Copy link

ghost commented Oct 18, 2018

可以哇,很奶思的哇

Gcaufy referenced this issue in wepyjs/wepy-templates Oct 18, 2018
@fsy0718
Copy link
Contributor

fsy0718 commented Oct 18, 2018

对于app级别的before-setData没有必要,这个情况比较少见,如果需要多页面共有处理方式,可以通过mixin的方式混入
如果有app级别的before-setData,那么在page中可以增加一个标识,表示当前页面可以禁用app的before-setData

@dlhandsome
Copy link
Collaborator

dlhandsome commented Oct 19, 2018

比较赞成使用 wepy.mixin 方式来实现全局的 hooks,同时也提供了 WePY 第三方拓展定义hooks的能力

Gcaufy added a commit that referenced this issue Oct 19, 2018
@Gcaufy
Copy link
Collaborator Author

Gcaufy commented Oct 19, 2018

@fsy0718
如果想每个页面都有这个功能肯定是可以使用mixin的,但是这表示每个组件我都需要单独引入mixin。
所以有 app hook 就可以省去每个组件单独引入。
另外这样就不需要增加标识禁用app 的hook了。如果你想局部使用就用 mixin hook,如果你想全部引用就用app hook

@langlangbody
Copy link

版本棒 比之前好多了

@Gcaufy Gcaufy closed this as completed Jun 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.0.x Version 2.0.x Discussion
Projects
None yet
Development

No branches or pull requests

4 participants