javascript - 命名函数导致 setState 错误

标签 javascript reactjs

这是我的应用程序类

  constructor(props) {
    super(props);

    this.state = { lat: null, errorMessage: "" };

    window.navigator.geolocation.getCurrentPosition((position) => {
      this.setState({ lat: position.coords.latitude });
    });
  }

当我将箭头函数更改为使用单词函数时,它会抛出一个错误,指出无法读取未定义的 setState 的属性

  constructor(props) {
    super(props);

    this.state = { lat: null, errorMessage: "" };

    window.navigator.geolocation.getCurrentPosition(function (position) {
      this.setState({ lat: position.coords.latitude });
    });
  }

语法有问题吗?

最佳答案

上下文不同,这不是 React 的一部分,它更多地与 javascript 有关。

传统函数将使用调用者的this(通常是事件触发器)

但是,箭头函数将使用当前函数上下文中的 this ,在本例中是 react 组件,这就是它在箭头函数上工作的原因。

关于javascript - 命名函数导致 setState 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61536701/

相关文章:

javascript - 如何在同一页面上的多个实例上使用 React 组件?

css - 如何在不使用绝对位置的情况下制作落后的东西

javascript - 在新部分中使用 CSS 维护事件按钮的解决方案

javascript - 如何在 React 中的两个组件之间传递变量?

javascript - HTMLUnit HtmlTextInput 和提交按钮

javascript - 在非 React 组件中使用钩子(Hook)的替代方法是什么?

javascript - React.js useState 与功能组件上的 Array.push 方法

android - 窗口重新启动后 React Native 给出错误 module.js :549

JavaScript 创建 zip 文件

javascript - 请问有人可以批评这个邮票卡代码笔吗?