Есть ли способ предотвратить такой же цикл IF - PullRequest
0 голосов
/ 26 мая 2020

Привет, ребята, я проверяю версию своего приложения, чтобы очистить кеш и удалить локальное хранилище. Но что-то не так, потому что я нахожусь в одном л oop, а приложение продолжает обновляться. Что я делаю не так ? В основном я создаю элемент currentVersion в свой localStorage и делаю запрос, чтобы проверить, есть ли новая версия. Но мой currentVersion продолжает обновляться, и приложение находится в refre sh l oop.

    export default class Login extends Component {
    constructor(props) {
        super(props);
              currentVersion: '',
              versionFromRequest: ''
  }
}

   async componentDidMount() {

    axios.get(SERVER_URL + '/api/appVersion')

        .then((response) => {
            this.setState({
                versionFromRequest: response.data
            });
        })
         const branding = JSON.parse(localStorage.getItem('page'));

         localStorage.setItem('currentVersion', branding.version)

  this.setState({
    branding,
    pageReady: true,
    currentVersion: branding.version
});
...
render() {
    const { branding, versionFromRequest, currentVersion } = this.state;

 if(currentVersion !== versionFromRequest){
       caches.delete(arguments)
       localStorage.removeItem('access')
       window.location.reload()
     } else {
return(
...
)
}

1 Ответ

0 голосов
/ 26 мая 2020

Мне кажется, что проблема в следующем:

const branding = JSON.parse(localStorage.getItem('page'));

Вы получаете currentBrandingVersion на основе этого page ключа на локальном хранилище.

Этот ключ page никогда не обновляется. Следовательно, полученный из него currentVersion, если он не совпадает один раз, всегда остается устаревшим, и страница продолжает загружаться. Чтобы исправить это, вы можете сделать что-то вроде этого:

if(currentVersion !== versionFromRequest){
       ...
window.location.reload();
     localStorage.setItem('page', ...); //Set the key so that the condition doesn't match the next time.
     } else {
    ...

}
...