আমার প্রতিক্রিয়া উপাদানটিতে আমি একটি সাধারণ স্পিনার প্রয়োগ করার চেষ্টা করছি যখন একটি এজাক্স অনুরোধ চলছে - আমি লোডিংয়ের স্থিতি সঞ্চয় করতে রাষ্ট্র ব্যবহার করছি।
কিছু কারণে আমার প্রতিক্রিয়া উপাদানটিতে নীচের এই কোডটির এই অংশটি এই ত্রুটিটি ছুঁড়েছে
কেবল একটি মাউন্ট করা বা মাউন্টিং উপাদান আপডেট করতে পারে। এর অর্থ সাধারণত আপনি আনমাউন্টযুক্ত উপাদানগুলিতে সেটস্টেট () বলে called এটি কোনও অপশন নয়। অপরিবর্তিত উপাদানটির জন্য দয়া করে কোডটি পরীক্ষা করুন।
আমি যদি প্রথম সেটস্টেট কল থেকে মুক্তি পাই তবে ত্রুটিটি চলে যায়।
constructor(props) {
super(props);
this.loadSearches = this.loadSearches.bind(this);
this.state = {
loading: false
}
}
loadSearches() {
this.setState({
loading: true,
searches: []
});
console.log('Loading Searches..');
$.ajax({
url: this.props.source + '?projectId=' + this.props.projectId,
dataType: 'json',
crossDomain: true,
success: function(data) {
this.setState({
loading: false
});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
this.setState({
loading: false
});
}.bind(this)
});
}
componentDidMount() {
setInterval(this.loadSearches, this.props.pollInterval);
}
render() {
let searches = this.state.searches || [];
return (<div>
<Table striped bordered condensed hover>
<thead>
<tr>
<th>Name</th>
<th>Submit Date</th>
<th>Dataset & Datatype</th>
<th>Results</th>
<th>Last Downloaded</th>
</tr>
</thead>
{
searches.map(function(search) {
let createdDate = moment(search.createdDate, 'X').format("YYYY-MM-DD");
let downloadedDate = moment(search.downloadedDate, 'X').format("YYYY-MM-DD");
let records = 0;
let status = search.status ? search.status.toLowerCase() : ''
return (
<tbody key={search.id}>
<tr>
<td>{search.name}</td>
<td>{createdDate}</td>
<td>{search.dataset}</td>
<td>{records}</td>
<td>{downloadedDate}</td>
</tr>
</tbody>
);
}
</Table >
</div>
);
}
প্রশ্নটি হল যে আমি যখন এই উপাদানটি ইতিমধ্যে মাউন্ট করা উচিত (ততটি উপাদানটি ডিডমাউন্ট থেকে আহ্বান করা হচ্ছে) তখন কেন আমি এই ত্রুটিটি পাচ্ছি?