我不断收到错误消息
未捕获的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*/})
。就我而言,这会导致错误,但我还没有看到调用无效的原因,这是与绑定有关的问题的一部分。
答案 0 :(得分:1)
我认为这只是一个错字,请尝试使用this.setState
(而不是setstate
)。
if (this.state.hideElement) {
this.setState({ hideElement: false });
}