react-routerを使用してセカンダリコンポーネントの内部にsetState
エラーが発生します。誰も私のコードで問題を見ることができますか?React - setState(...):マウントされているコンポーネントまたはマウントされているコンポーネントのみをアップデートできます
import React, { Component } from 'react';
import { Row, Col } from 'react-bootstrap';
import { Card, CardTitle, CardText } from 'material-ui/Card';
import './App.css';
class Dashboard extends Component {
constructor(props) {
super(props);
this.state = {
info: []
};
this.setInfo = this.setInfo.bind(this);
this.setInfo();
}
setInfo =() => {
var info = [
{
id: 0,
title: 'Server Space',
subtitle: '',
textContent: ''
},
{
id: 1,
title: 'Pi Space',
subtitle: '',
textContent: ''
}
];
this.setState({ info: info });
}
render() {
return (
<div>
<h2>Info</h2>
<Row>
{this.state.info.map((inf) => {
return (
<Col xs={12} md={4} key={inf.id}>
<Card className="card">
<CardTitle title={inf.title} subtitle={inf.subtitle} />
<CardText>{inf.textContent}</CardText>
</Card>
</Col>
)
})}
</Row>
</div>
)
}
}
export default Dashboard;
これは、その結果:問題の行は、あなたがコンストラクタでthis.setState
を呼び出すことになっていませんthis.setState({ info: info });
ありがとうございました。なぜこれがこれまで私がこれまでやったように動作していないのか混乱していましたが、私はスーパーエージェントを使用していて、非同期終了関数でsetStateを呼び出していることに気付きました – Timmo
共有のおかげで、それは私が持っているものです コンストラクタ(小道具){ \t \tスーパー(小道具); \t \t this.state = {data:this.props.cryptos、isLoading:false}; \t \tたsetInterval(()=> { \t \t \t this._query(クエリ); \t \t}、6000)。 \t}; \t _handleResponse(応答){ \t \t this.setState({data:レスポンス、isLoading:false}); \t}; \t _query(クエリ){ \t \t this.setState({isLoading:true}); \t \t \t => this.setState((クエリ) \t \t \t \t .then(応答=> response.json())。次いで、(JSON => this._handleResponse(JSON))\t \t .catch(エラーをフェッチ{ \t \t \t \t \t \t \t \t isLoading:偽、 \t \t \t \t \t \t \t \tメッセージ: 'エラー:' +エラー \t \t \t})); \t}; – Alex
コンポーネントがアンマウントされているときにクリアする必要があることがわかりました。ここではインターバルについての素晴らしい記事http://reactnativequickly.com/book/chap07.html – Alex