为什么此反应状态返回未定义状态?

时间:2018-09-26 22:26:34

标签: reactjs

我的React组件出现以下错误:

Failed to compile.

./src/components/GameInfo.js
Line 13:  'isPlaying' is not defined  no-undef

Search for the keywords to learn more about each error.

但是我在同一文件中定义了该状态,这就是整个事情:

import React from 'react';
import { Layer, Stage } from 'react-konva';
import { connect } from 'react-redux';
import Banner from './Banner.js';
import CurrentTetromino from '../containers/CurrentTetromino.js';
import ActiveTetrominos from '../containers/ActiveTetrominos.js';
import gameConstants from '../gameConstants.js';
import style from '../styles/styles.css';

const { fieldHeight, fieldWidth } = gameConstants;

let GameField = ({ isPlaying, isPaused, isGameOver }) => {
if (isPlaying) {
    return (
        <div style={{display: 'inline'}}>
            <div className={style.gameField}>
                <Stage width={fieldWidth} height={fieldHeight}>
                    <Layer>
                        <CurrentTetromino />
                        <ActiveTetrominos />
                    </Layer>
                </Stage>
                { isPaused ? <Banner label="PAUSED" color="black" opacity=".5" /> : null}
            </div>
            { isGameOver ? <Banner label="GAME OVER" color="red" opacity=".8" /> : null}
        </div>
    );
}
return null;
};

const mapStateToProps = ({ gameStatus }) => ({
isPlaying: gameStatus !== 'IDLE',
isPaused: gameStatus === 'PAUSED',
isGameOver: gameStatus === 'GAME_OVER',
});

GameField = connect(mapStateToProps)(GameField);

export default GameField;

我想像是导致该错误的错误对于isPaused和isGameOver也将类似地返回。

我不确定为什么它没有在mapStateToProps中获取那些const。不幸的是,使用React,它实际上只能告诉我发生错误的那一行(第13行)。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

这个愚蠢的网站不会让我发表评论,但是我会检查gameStatus在您的mSTP中是否一切正常。与其执行隐式返回,不如将其显式更改并在您的mSTP中console.log gameStatus。或者在那里打一个调试器。那将是我的第一个检查本能。

const mapStateToProps = ({ gameStatus }) => {
   console.log(gameStatus);
   return { 
      isPlaying: gameStatus !== 'IDLE',
      ....
   }
}

如果您可以分享所带来的收获,我可能会帮助您更多。否则祝您好运,并希望可以帮助您解决问题。

答案 1 :(得分:0)

以经典编程方式,我打错了“ IsPLaying”而不是“ IsPlaying”。

谢谢您的帮助!