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

如何从回调函数[duplicate]访问状态

吴镜
2023-03-14

我有一个组件反应本机:

export default class Screen extends Component {
  constructor(props){
    super(props);
    this.state = {
      prop1: false,
      prop2: simpleFunc
    };
  }
  simpleFunc = () => { /*...*/ }

  componentWillMount() {
      BackgroundGeolocation.on('location', this.onLocation);

最后一行是将在新位置调用的回调方法。
通过该方法,我无法访问this.statethis.simpleFunc()

如何从回调函数更新状态?

共有1个答案

祁博涛
2023-03-14

要访问内部onLocation中的,您需要绑定回调:

  componentWillMount() {
      BackgroundGeolocation.on('location', this.onLocation.bind(this));

或者,您可以使用箭头函数(将使用父级的词法范围):

  componentWillMount() {
      BackgroundGeolocation.on('location', (location) => this.onLocation(location));

 类似资料:
  • 问题内容: 如何从exec函数之外找到用户名? 问题答案: 您可以将exec函数传递给回调函数。当exec函数确定用户名时,您将使用用户名调用回调。 由于JavaScript的异步特性,您无法执行以下操作: 这是因为该行不会等到上面的函数完成。 回调说明:

  • 编辑(2020年6月22日):由于这个问题引起了一些新的兴趣,我意识到可能会有一些困惑。因此,我想强调:问题中的例子是作为玩具的例子。它没有反映问题。引发这个问题的问题是使用第三方库(对该库的控制有限),该库将回调作为函数的参数。提供最新状态的回调的正确方法是什么?在反应类中,这可以通过使用this来完成。在React钩子中,由于状态封装在函数中的方式,如果回调通过获取状态,它将是过时的(值设置回

  • 问题内容: 看来我无法访问jquery ajax成功函数内的$(this)。请参见下面的代码。 问题答案: 应该怎么办 如果在该函数之外有对它的引用,则可以将其存储到变量中。

  • 我如何访问函数的结果,以便以后处理它 例如

  • 我想在构造函数中访问多个位置的状态值。当我在构造函数中输入console.log(this)时,我可以看到可以访问特定的值,但是当我输入console.log this.state时,我没有定义。 这就是我想象的工作方式(我想访问CSSValue中的状态): 但是,当我运行此代码: 然后我在控制台中得到这个: 但是当我将console.logconsole.log(this.state)它打印未定

  • 问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。