Redux React:无法在另一个类的函数中访问'this'

iamsaksham

我有一个名为的类iccSdk,其名称为on现在在我的React中render,我正在调用该函数iccSdk.on()此外,我想从此函数中调度一个动作,因此我尝试使用它,this.props.actions.chatConnect(data);但是this在这里变得不确定。

第一次尝试:

render() {
    console.log(this);
    iccSdk.on('connect', function(data) {
      console.log(this);
      this.props.actions.chatConnect(data);
    });
...
}

在上述情况下,this该函数内部显示为undefined,但在我的iccSdk.on()函数外部看起来不错。

第二次尝试:

render() {
    var t = this;
    iccSdk.on('connect', function(data) {
      t.props.actions.chatConnect(data);
    });
...
}

在第二次尝试中,它工作正常,但我怀疑这样做是否是一种好习惯,而且我也感到困惑,为什么this无法在我的iccSdk.on()内部访问

拉利·努尔特耶娃(Lalli Nuorteva)

函数创建一个新的作用域。因此,上下文(= this)是不同的或不存在。您的第二种方法很好。

其他执行此操作的方法:

箭头功能:

箭头函数不会为该函数创建新的上下文。因此,您可以在函数内部使用相同的this。为此,需要ES6。

render() {
    console.log(this);
    iccSdk.on('connect', data => {
      console.log(this);
      this.props.actions.chatConnect(data);
    });
...
}

装订

使用bind函数,您可以将“ this”绑定到您的函数。

render() {
    console.log(this);
    iccSdk.on('connect', function(data) {
      console.log(this);
      this.props.actions.chatConnect(data);
    }.bind(this));
...
}

thisArg

iccSdk.on也可能会使用“此参数”。我不确定是否可以。您可以在此处阅读有关thisArg的更多信息:https ://h3manth.com/new/blog/2014/thisarg-in-javascript/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

react-native 如何从另一个包装在 react-redux 中的 connect() 类调用函数?

在另一个函数中调用一个函数并传递它 id,react + redux

无法在React-Redux应用程序中从另一个动作调用一个动作

React Native + Redux - onPress 调度一个动作和另一个函数

React / Redux:分派动作后,无法从另一个组件访问存储变量作为props?

在React-Redux应用程序的另一个组件中访问Connect函数值时出现问题

在redux-thunk中在另一个内部调用一个异步函数

ReactJS 和 Redux 从另一个文件访问状态“构造函数”

另一个组件如何从react / redux中的另一个组件动作中监听?

我如何从另一个 React 组件访问 redux 状态?

如何在另一个组件中访问Redux表单值

Redux在另一个reducer中的更新状态

是否可以在React中创建一个仍可以访问全局Redux存储的类?

我如何在React Redux中访问另一个Reducer的状态。减速器和存储之间的状态流

如何将 props(从 Redux 获取的)从一个组件传递到另一个(React/Redux)?

在 React Native Expo 中使用 react-redux 更改另一个键的值

React / Redux使用store从另一个组件获取状态

react-redux 分派一个动作,该动作依赖于另一个同步

在一个组件中更新 redux 存储不会反映在另一个组件中

从 redux 存储中获取一个数组会将其放入另一个数组中

如何在另一个组件中获取Redux Form数据

redux状态被包裹在另一个对象中

过滤器产品依赖于本机Redux中的另一个ACTION

Redux-获取数据,但在另一个组件中呈现

redux - 如何删除嵌套到另一个数组的数组中的元素

redux - 如何删除嵌套到另一个数组的数组中的元素

在 redux 中,一个减速器正在改变另一个减速器

在Redux表单中基于另一个字段验证一个字段

当我们使用“ redux-starter-kit”时,如何在另一个减速器中访问减速器状态?