Я работаю над приложением, в котором я обновляю интерфейс с данными, которые поступают в поток. Я начинаю с кодом, который является чем-то вроде этого:Не удается установитьState on ReactJS-компонент извне React
var TempDisplay = React.createClass({
getInitialState: function() {
return {
tempFAA:0.69,
tempGGG:1.4,
temp03K:3.66,
temp60K:58.79,
rateFAA:-0.04,
rateGGG:-0.0001,
rate03K:0.45,
rate60K:1.3,
}
},
render: function() {
return(
<div>
<Temp label="60K" color="#d62728" temp={this.state.temp60K} rate={this.state.rate60K} />
<Temp label="03K" color="#2ca02c" temp={this.state.temp03K} rate={this.state.rate03K} />
<Temp label="GGG" color="#ff7f0e" temp={this.state.tempGGG} rate={this.state.rateGGG} />
<Temp label="FAA" color="#1f77b4" temp={this.state.tempFAA} rate={this.state.rateFAA} />
</div>
)
}
});
var Instrument = React.createClass({
render: function() {
return(
<div><span style={{color:this.props.color}}>{'\u25C9 '}</span>{this.props.label}</div>
)
}
});
var tempDisplay = ReactDOM.render(<TempDisplay />, document.getElementById("tempDisplay"));
Что мне кажется, что я должен сделать теперь вызов tempDisplay.setState()
обновлять эти температурные дисплеи всякий раз, когда новые данные приходит, но tempDisplay
кажется <div>
объект, на котором setState()
не может быть вызван. Как я должен правильно это делать?
Что вы подразумеваете под «когда появляются новые данные», так как данные в вашем состоянии будут изменены, если вы замените его новыми значениями ... где вы ожидаете, что это произойдет от реакции, это потрясающе, но его не магия – Maxwelll
Может быть, лучше не «setState» из компонента «tempDisplay», а передавать данные в него с помощью реквизита? Если данные обновляются извне, вам не нужно использовать состояние компонента для его хранения. – elmeister
Как я уже говорил, данные поступают в поток. Так что нет, а не других компонентов React. – roboguy222