反应绑定错误:FontChooser.js:15未捕获的TypeError:this.setstate不是函数

时间:2020-03-20 12:40:02

标签: reactjs

我不断收到错误消息

未捕获的TypeError:this.setstate不是函数

在我的代码行中。 我正在使用VSCode。我正在使用Chrome调试器,因为在VSCode中直接进行调试存在问题。我已经尝试解决此问题,但是并没有改变,最终从未得到纠正。我正在使用VSCode中的LiveServer启动代码。有一个更好的配置,但我只是尝试运行代码。

我的代码在下面

HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="Fontchoose_container"></div>

    <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
    <div>
    Here goes...
     <!--Programmed scripts-->
      <script src="./FontChooser.js" type="text/babel"></script> 
    ....done
</div>
</body>
</html>

JS脚本

class FontChooser extends React.Component {
    constructor(props) {
    super(props);

    this.state = {hideElement:true}
    this.text="Click on this part"
    this.size=10
//  this.handleClicks= this.handleClicks.bind(this)

    }
    handleClicks() {

        if (this.state.hideElement) {
            console.log(this.state)
            this.setstate({hideElement:false})  //ERROR HAPPENS HERE

        } else {
            this.setstate({hideElement:true})
        }
document.getElementById("checkbox").hidden=this.state.hideElement
document.getElementById("decreaseButton").hidden=this.state.hideElement
document.getElementById("fontSizeSpan").hidden=this.state.hideElement
document.getElementById("increaseButton").hidden=this.state.hideElement
document.getElementById("textSpan").hidden=this.state.hideElement

     }


    render() {
    return(<div >
            <button id="LaunchButton" onClick={this.handleClicks.bind(this)}>Click me</button>
           <input type="checkbox" id="boldCheckbox" hidden={true}/>
           <button id="decreaseButton" hidden={true}>-</button>
           { <span id="fontSizeSpan" hidden={true}>{this.props.size}</span> }
           <button id="increaseButton" hidden={true}>+</button>
           <span id="textSpan" hidden={true}>{this.props.text}</span>
           </div>
        //    hidden={false}
    );
    }
}
ReactDOM.render( <FontChooser />, document.getElementById('Fontchoose_container'))

我看了几篇参考书以及这篇文章,但更正并没有什么不同: this.setState is undefined

我尝试以几种不同的方式纠正绑定调用,这导致具有初始化属性的对象。在我发现的所有示例中,他们都使用了this.setstate({*/set parameters:new*/})。就我而言,这会导致错误,但我还没有看到调用无效的原因,这是与绑定有关的问题的一部分。

1 个答案:

答案 0 :(得分:1)

我认为这只是一个错字,请尝试使用this.setState(而不是setstate)。

if (this.state.hideElement) {
  this.setState({ hideElement: false });
}