javascript - this.state 在函数 React JS 组件中使用时未定义

标签 javascript reactjs this

<分区>

我有下面的 React 组件,我想从函数 randomPosition() 访问 this.state.board(一个二维数组,每个元素为 0 或 1)。当我调用 randomPosition 时,它返回“无法读取未定义的属性状态”。我是不是对 this 关键字做错了什么?

var App = React.createClass({

getInitialState(){

  return {

   board: []

}

},

randomPosition: function(){
//generates a random position on this.state.board array

  var position = [];
  var positionX = null;
  var positionY = null;

  var generatePosition = function(){

    positionX = Math.floor(Math.random() * 64);
    positionY = Math.floor(Math.random() * 64);

    if(this.state.board[positionX][positionY] === 1){

      position.push(positionX, positionY);
      return position;

    } else {

      generatePosition();

    }

  }

  generatePosition();

}


})

感谢您的帮助!

最佳答案

您的 generatePosition 函数 将有自己的作用域,因此此函数内的 this 将指向它自己的作用域,而不是 state 所在的外部作用域> 可访问。您可以存储 outer scope 的引用,然后在此函数中使用它,例如

randomPosition: function(){
//generates a random position on this.state.board array

  var position = [];
  var positionX = null;
  var positionY = null;
  var that = this;
  var generatePosition = function(){

    positionX = Math.floor(Math.random() * 64);
    positionY = Math.floor(Math.random() * 64);

    if(that.state.board[positionX][positionY] === 1){

      position.push(positionX, positionY);
      return position;

    } else {

      generatePosition();

    }

  }

关于javascript - this.state 在函数 React JS 组件中使用时未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477433/

相关文章:

javascript - 使用 (this.clientWidth < this.scrollWidth) 在 Firefox 中检测溢出失败

javascript - 像 Python 一样的 NodeJS 字符串格式?

javascript - React block 中的 block

javascript - 使用 "this"作为参数

this - *this* 在 Backbone.js 的嵌套函数调用中的传播

javascript - 上传到存储服务器时文件格式发生变化

javascript - 在 AngularJS 中使用 Promise 时出现问题

reactjs - Chrome 扩展程序可以将什么脚本注入(inject)到页面中来访问 React 元素?

javascript - input 的 event.target 在 this.setState [React.js] 中为 null

javascript - 从返回的 promise 中设置成员变量