React组件上的pageshow事件监听器无法正常工作

时间:2016-09-30 22:11:26

标签: javascript reactjs javascript-events safari pageshow

我有以下情况,我需要在第一次输入页面时运行一些“代码”,或者从其他页面返回

Safari的缓存功能(https://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/)导致了这一点,因为缓存了我的网页而没有执行任何操作

我按照他们的建议为'pageshow'事件添加了一个事件监听器,这样我就可以检查该事件是否持久化然后运行我需要的事件。

example基本上就是我想要的:

  • 第一页访问...附上听众=酷,我有。
  • 如果我离开页面然后回来(使用Safari)它会在页面显示中激发我的听众=酷,我有......差不多。
  • 每次我导航回该页面时都应该触发听众=不酷,我的听众会发射一次。

我正在使用react和 componentDidMount()是我准备的所有内容:

enter image description here

这是第一次工作..我能够从我的页面导航并回到它+执行我需要的东西。

问题是:重复“导航出我的页面然后再回来”第二次不会做任何事情......看起来听众被删除了什么。

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

两天后试图找到方法......我的同事让我试试a listener on 'popstate'。我是如此想要获得这个页面显示'听众工作,我完全忘记测试那一个;它完美无缺:

 @extends('layouts/principal')
 @section('content')
 {!!Form::open(['route'=>'trivago.store'])!!}
   <div class="form-group">
     {!!Form::label('Fecha Inicio:')!!}
     {!!Form::text('date',null,['class'=>'date datepicker'])!!}

   </div>
  <div class="form-group">
     {!!Form::label('Fecha Final:')!!}
     {!!Form::text('dateout',null,['class'=>'date datepicker'])!!}

  </div>
  <div class="form-group">
     {!!Form::label('Nº Huespedes:')!!}
     {!!Form::text('nhuespedes',null,['class'=>'form-control'])!!}

   </div>
   {!!Form::submit('Comprobar',['class'=>'btn btn-primary'])!!}


{!!Form::close()!!}

@stop