reactjs - React 中的状态为空
问题描述
我收到此错误:
类型错误:this.state 为空
有这样的代码,但它不起作用....知道为什么吗?
我想更改标签的文本 (reanalyzeButton)
阅读几个文档和教程,它似乎应该工作。不知道为什么它会这样。
这是我使用 React 0.13 使用的继承代码
var ProjectHeader = React.createClass({
displayName: 'ProjectHeader',
intervalId: null,
state: {
projectjson: [],
label: '',
},
componentDidMount() {
// Now we need to make it run at a specified interval
this.intervalId = setInterval(this.refresh, 1000);
this.setState({ label: '<span><i className="octicon octicon-sync" /> Project queued for analysis: <strong>{queuePosition}</strong>.</span>'});
},
refresh : function(){
if (this.state.projectjson.analysis_status == 'succeeded') {
clearInterval(this.intervalId);
this.setState({label: '<A onClick={this.analyzeProject} title="Request an analysis of the project"><i className="octicon octicon-sync"/> Check for new commits</A>'});
}
render : function(){
if (props.project.analysis_status == 'in_progress') {
//reanalyzeButton = <A onClick={this.analyzeProject} title="Request a re-analysis of the project"><i className="fa fa-refresh fa-spin" /> Analysis in progress</A>
reanalyzeButton = this.state.label
} else if ((!props.project.analyze) || props.project.analysis_priority == 0) {
//reanalyzeButton = <A onClick={this.analyzeProject} title="Request an analysis of the project"><i className="octicon octicon-sync"/> Check for new commits</A>
reanalyzeButton = this.state.label
} else {
//reanalyzeButton = <span><i className="octicon octicon-sync" /> Project queued for analysis: <strong>{queuePosition}</strong>.</span>
reanalyzeButton = this.state.label
}
return <div className="project-header" itemScope itemType="http://schema.org/Code">
<div className="row">
<div className="col-xs-12 col-sm-9">
<div className="clearfix">
{projectHeader}
</div>
</div>
<div className="col-xs-12 col-sm-3">
<span className="qc-badge">
{badge}
</span>
</div>
</div>
<div className="row">
<div className="col-xs-12">
<ul className="meta">
{fetchStatus}{projectInfo} <li>{reanalyzeButton}</li>
</ul>
<ul className="tags hidden-xs">
{tagList}
</ul>
</div>
</div>
解决方案
您需要指定一种getInitialState
方法才能设置初始状态。见这里:https ://reactjs.org/docs/react-without-es6.html#setting-the-initial-state
推荐阅读
- python - 请求模块不适用于 Python3,但适用于 python
- prestashop - 管理单价单位 - Prestashop
- python - 使用 Python 以编程方式更改 stl CAD 文件
- wpf - TaskbarItemInfo 不显示 Indeterminate ProgressState
- akka - 将丰富的对象存储为具有持久性的演员是一个好主意吗?
- reactjs - React-Router 的问题
- google-cloud-platform - Google Cloud 功能 - 如何在调用 Google App Engine 时进行身份验证
- url - 如何在 Laravel 5.8 的中间件中编辑 $request-url 在它到达路由 API 之前
- mongodb - 如何获取特定的子文档数组 MondoDB
- sql - 如何根据 DateTime 和其他变量设置新的 SQL 变量?