react hook 如何使用装饰器?

发布于 2022-09-12 03:15:09 字数 342 浏览 21 评论 0

使用装饰器前:

const A = (peops) => {...}

export default connect(state => ({
  gData: state.gData,
}))(A);

使用装饰器后:

@connect(state => ({
  gData: state.gData,
}))
const A = (peops) => {...}
export default A

使用装饰器后的写法会报错,请问如何修正?

如果是 class 组件则正常不报错

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

兮子 2022-09-19 03:15:09

装饰器只能用于类和类的属性、方法,不能用于函数,因为存在函数提升。类是不会提升的。这里有一个例子:

var counter = 0; 

var add = function () { counter++; }; 

@add 
function foo() { }

上面的代码,意图是执行后counter等于1,但是实际上结果是counter等于0。因为函数提升,使得实际执行的代码是下面这样:

@add 
function foo() { } 

var counter; 
var add; 
counter = 0; 
add = function () { counter++; };

另外,使用装饰器语法需要使用对应的 babel 插件。

参考:http://www.fly63.com/article/...

如梦初醒的夏天 2022-09-19 03:15:09

我记得@装饰器只能作用在类或者类的方法上面的,不能用在函数上,因为存在函数提升

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文