Я пытаюсь выяснить, как выполнить вызов API, а затем получить временную метку для определенного места, а затем запустить часы для этого местоположения? У меня это работает, но мне просто интересно, правильно ли это? В конце концов, я собираюсь придерживаться этого в архитектуре потока. Я устанавливаю состояние из реквизита, против шаблона? Я только хочу сделать один первоначальный запрос, а затем манипулировать интервалом, поэтому я решил, что лучше использовать состояние.Настройка состояния формирует выборку данных, является ли это анти-шаблоном?
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
time: 0
};
}
componentDidMount() {
const URL = 'http://api.timezonedb.com/?lat=37.773972&lng=-122.431297&format=json&&key=XXXXXXXXXXX';
const _this = this;
fetch(URL)
.then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
_this.setState({
time: data.timestamp
});
}).catch(function() {
reject(err);
});
this.interval = setInterval(this.tick.bind(this), 1000);
}
tick() {
this.setState({
time: this.state.time + 1
});
}
componentWillUnmount() {
clearInterval(this.interval);
}
render() {
return (
<div>
<p>Time on West Coast:</p> {moment.unix(this.state.time).format('YYYY-MM-DD HH:mm:ss')}
</div>
);
}
}
ReactDOM.render(
<App/>,
document.getElementById('container')
);
хорошо думаю я работал его componentWillReceiveProps (nextProps) { this.setState ({ время: nextProps.data.timestamp }); } – user3224271