我有一个关于这个密码的问题:https://github.com/reactjs/redux/blob/master/examples/async/containers/App.js

明确地:

  constructor(props) {
    super(props)
    this.handleChange = this.handleChange.bind(this)
    this.handleRefreshClick = this.handleRefreshClick.bind(this)
  }

我想这是一个由两部分组成的问题.

  1. 为什么我需要将handleChange设置为类this.handleChange =的一个实例,我不能只使用handleChange的静态函数,并在类onClick={handleRefreshClick}>中直接调用它?
  2. 我不知道这里发生了什么:this.handleRefreshClick.bind(this)

谢谢

推荐答案

按相反的顺序回答...

  1. this.handleRefreshClick.bind(something)返回一个新函数,其中对this的引用将引用something.这是一种保存当前值this的方法,该值在调用构造函数期间在作用域中,以便以后调用函数时使用.
  1. 如果您的函数不需要访问组件的状态,那么当然,您不需要绑定它们.

支持将这些行添加到构造函数的理由是,新绑定函数在类的每个实例中只创建一次.你也可以使用

onClick={this.handleRefreshClick.bind(this)}

或(ES6):

onClick={() => this.handleRefreshClick()}

但这两种方法都会在每次重新渲染组件时创建一个新函数.

Reactjs相关问答推荐

客户端组件中服务器组件的两难境地

有没有办法将在服务器端全局获取的一些数据传递到Next&>13应用程序目录中的客户端组件?

如何用Reaction做交互式的MathML?

更改购物车中的产品数量后,PayPal Reaction/Next JS按钮未更新

如何从Reaction-Arborist树获取排序数据

用于获取带有事件处理程序的API的动态路由

阻止组件更新的多分派Redux Thunk或setState是否有任何问题

更改点几何体的坐标会将其隐藏

关于forwardRef,我可以';我不理解第二个用例

如何垂直对齐 React Bootstrap Table 行中的项目

React 在第一次渲染时为 null

如何在一个 Next.js 项目中使用两种布局?

未处理的拒绝 (TypeError):无法读取未定义的属性(读取协议)

使用 axios 响应路由 Dom 操作

如果传递给挂钩的数据需要事先修改,如何使用自定义挂钩?

在 Remix 中使用 chartjs 和 react-chartjs-2 会出现错误react-chartjs-2未在您的 node_modules 中找到

如何通过 Material ui select 使下拉菜单下拉

交换键仍然引入了 fresh 的 DOM 元素

如果两个组件在 React 中导入相同的 CSS 文件会发生什么?

ClearInterval 在 React 中的 useRef 没有按预期工作