反应本机状态在setinterval函数内返回undefined

时间:2018-02-06 11:19:36

标签: reactjs react-native

enter image description here

我不明白为什么州会回来undefined我的代码就是这样:

class s extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
          name:null,
          uri:null,
          fbid:null,
        };     
    }

  componentDidMount() {
   setInterval(function(){..
    if(this.state.fbid!=null){..
    ..),1000}

this.state.fbid =>未定义

3 个答案:

答案 0 :(得分:1)

this超出了函数的上下文,因为setInterval函数创建了自己的作用域。请尝试使用箭头功能。

componentDidMount() {

    setInterval(() => {
      if(self.state.fbid!=null){
          // do something
      };
    }, 1000);
}

答案 1 :(得分:0)

我想,在反应中,自定义组件名称应以大写字母开头。

https://codesandbox.io/s/kolwq50kj5,按预期工作。

答案 2 :(得分:0)

定义函数将在此创建自己的范围。和this限制功能范围。因为state不在函数范围内,所以您无法访问它,因此未定义。尝试使用箭头功能:

componentDidMount() {

  setInterval(() => {
    //do anything
  }, 1000)

}