Мне нужно обновить некоторую информацию в плагине. Что я делаю:
app.js:
import React, { Component } from 'react';
import CesiumGlobe from "./cesium/CesiumGlobe";
class App extends Component {
constructor(props){
super(props);
this.state = {
pin : [],
};
}
componentDidMount() {
let fetchData = () => {
let url= "localhost:3001/pin"
fetch(url)
.then(resp=>resp.json())
.then(data =>{
this.setState((state)=>{
return { pin:data }
})
});
}
fetchData()
this.update = setInterval(fetchData, 2000)
}
render() {
const containerStyle = {
width: '100%',
height: '100%',
top: 0,
left: 0,
bottom: 0,
right: 0,
position: 'fixed',
};
let icons = [];
this.state.pin.forEach(function(element) {
icons.push(element);
});
return (
<div style = {containerStyle}>
<CesiumGlobe icons = {icons} />
<div style = {{position : "fixed", top : 0}}>
<div style = {{color : "white", fontSize: 40, }}>
Text Over the Globe
</div>
<button style = {{fontSize : 40}} onClick = {this.handleFlyToClicked}>
Jump Camera Location
</button>
</div>
</div>
);
}
}
export default App;index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';
import "cesium/Source/Widgets/widgets.css";
import buildModuleUrl from "cesium/Source/Core/buildModuleUrl";
buildModuleUrl.setBaseUrl('./cesium/');
function tick() {
ReactDOM.render(
<App />,
document.getElementById('root')
);
}
setInterval(tick, 1000);Мое намерение состояло в том, чтобы загружать содержимое «pin.json» каждую секунду и передавать его в состояние, обновляя его каждую секунду.
В первый раз, когда я запускаю приложение, оно работает нормально, но если я вношу изменения в json, изменения полностью игнорируются ...
Я не могу понять, что делаю не так, кажется, я теряю слона в комнате, но все мои исследования мне ничего не дают.
Я думаю, что ваши изменения в pin.json никогда не будут автоматически переданы компоненту, вам придется получать содержимое файла каждый раз, когда вы хотите получить последнюю версию файла.
я знаю, но даже если я сделаю это, что было моей первой попыткой, информация не будет обновлена @kabbany, даже если я повторно визуализирую весь компонент?
Не могли бы вы предоставить больше кода о своей первой пробной версии?
@Kabbany отредактировал в вопросе
Поэтому, если браузер на самом деле выполняет сетевые вызовы каждые 2 секунды, вы должны увидеть это на вкладке сети вашего браузера, пожалуйста, убедитесь, что запрос не кэшируется каким-либо браузером.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это кажется ужасным способом сделать это. Вместо повторного рендеринга вашего приложения просто повторно выполните рендеринг компонента, т. Е. Выполните обновление в компоненте.