当前位置: 首页 > 知识库问答 >
问题:

Redux@connect装饰器中的“@”(at符号)是什么?

赵俊晤
2023-03-14
@connect((state) => {
  return {
    key: state.a.b
  };
})

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

共有1个答案

乜业
2023-03-14

@符号实际上是一个JavaScript表达式,目前建议用于表示修饰符:

修饰器使得在设计时注释和修改类和属性成为可能。

下面是不使用装饰器和使用装饰器设置Redux的示例:

import React from 'react';
import * as actionCreators from './actionCreators';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';

function mapStateToProps(state) {
  return { todos: state.todos };
}

function mapDispatchToProps(dispatch) {
  return { actions: bindActionCreators(actionCreators, dispatch) };
}

class MyApp extends React.Component {
  // ...define your main app here
}

export default connect(mapStateToProps, mapDispatchToProps)(MyApp);
import React from 'react';
import * as actionCreators from './actionCreators';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';

function mapStateToProps(state) {
  return { todos: state.todos };
}

function mapDispatchToProps(dispatch) {
  return { actions: bindActionCreators(actionCreators, dispatch) };
}

@connect(mapStateToProps, mapDispatchToProps)
export default class MyApp extends React.Component {
  // ...define your main app here
}
 类似资料:
  • 问题内容: 我正在用React学习Redux,偶然发现了这段代码。我不确定它是否特定于Redux,但我在其中一个示例中看到了以下代码片段。 虽然功能非常简单,但我不明白之前。如果我没有记错的话,它甚至都不是JavaScript运算符。 有人可以解释一下这是什么,为什么使用它? 更新: 实际上,它的一部分用于将React组件连接到Redux存储。 问题答案: 实际上,该符号是一个JavaScript

  • 问题内容: 我很好奇AngularJS中的装饰器到底是什么。除了AngularJS文档中的简短内容和youtube视频中的简短提及(尽管很有趣)之外,装饰者在线上没有太多信息。 正如Angular所说的那样,装饰器是: 装饰服务,允许装饰者截取服务实例的创建。返回的实例可以是原始实例,也可以是委派给原始实例的新实例。 我真的不知道这 意味着 什么,而且我不确定为什么要将这种逻辑与服务本身分开。例如

  • 问题内容: 我想按照这个代码在 然后像这样在传奇中使用它: 该减速器(甚至是减速器)看起来与我通常期望的减速器看起来非常不同。 谁能解释选择器是什么,以及reduce-reducer以及reducer如何适合redux-saga? 问题答案: 不是缩减器,而是确实的选择器,即知道如何从存储中提取特定数据的函数。 选择器 提供了一个额外的层,这样,如果您更改了商店结构,突然之间您不再在该位置,而是在

  • 问题内容: 我正在查看一些ES6代码,但我不明白将@符号放在变量前面时的作用。我能找到的最接近的事物与私有字段有关? 我在redux库中查看的代码: 这是我在该主题上找到的博客文章:https : //github.com/zenparsing/es-private-fields 在这篇博客文章中,所有示例都在类的上下文中-当在模块中使用符号时,这意味着什么? 问题答案: 是个 装饰工 。这是要添

  • 问题内容: 假设我有一个名为的类,并且我想使用装饰器设计模式。如果我错了,请纠正我,但是要使其正常工作,我们需要创建一个装饰器类,例如,该类将保留对实例的引用,所有其他装饰器将对其进行扩展以添加功能。 我不明白为什么我们必须创建装饰器类而不是使用实例? 问题答案: 装饰器模式用于动态地(即在运行时)向对象添加功能。通常,在编写类时,对象将具有固定的功能。但是重要的一点是,对象的功能以对对象的客户端

  • 问题内容: 基本上,我想知道为什么必须创建一个抽象装饰器类来实现(或扩展)某些接口(或抽象类)。为什么所有新的“装饰类”都不能简单地实现(或扩展)基本抽象对象本身(而不是扩展抽象装饰器类)? 为了更具体一点,我将使用设计模式书中涉及咖啡饮料的示例: 有一个称为的抽象组件类 简单的饮料类型,例如简单扩展 为了装饰饮料,创建了一个抽象类,该类扩展并具有 假设我们要添加“牛奶”调味品,将创建一个扩展 我