Redux @connect decorator中的“ @”(符号处)是什么?

我正在用React学习Redux,偶然发现了这段代码。我不确定它是否特定于Redux,但是我在其中一个示例中看到了以下代码片段。

@connect((state) => {
  return {
    key: state.a.b
  };
})

虽然的功能connect非常简单明了,但是我@以前并不了解connect如果我没有记错的话,它甚至不是JavaScript运算符。

有人可以解释一下这是什么,为什么使用它?

更新:

实际上,react-redux的一部分用于将React组件连接到Redux存储。

逆天西门2020/03/10 22:21:38

很重要!

这些道具称为状态道具,它们与普通道具不同,即使您不使用这些道具,对组件状态道具的任何更改也会一次又一次触发组件渲染方法,因此出于性能原因,请尝试仅绑定到组件在组件内部需要的状态道具,如果使用子道具,则仅绑定这些道具。

例如:假设您的组件内部仅需要两个道具:

  1. 最后一条消息
  2. 用户名

不要这样

@connect(state => ({ 
   user: state.user,
   messages: state.messages
}))

做这个

@connect(state => ({ 
   user_name: state.user.name,
   last_message: state.messages[state.messages.length-1]
}))