javascript - reactjs 在页面刷新或关闭时调用特定函数

标签 javascript reactjs

我有一个像这样的组件:

import React, { PropTypes, Component } from 'react'


class MyView extends Component {

    componentDidMount() {
        window.addEventListener('onbeforeunload', this.saveState())
    }

    componentWillUnmount() {
        window.removeEventListener('beforeunload', this.saveState())
    }

    saveState() {
        alert("exiting")
    }

    render() {

        return (
            <div>
                Something
            </div>
        )
    }

}

export default MyView

在这里,当用户刷新页面时,我想调用一个特定的函数,当调用结束时,我希望页面被刷新。用户关闭页面时也是如此。

在我上面的代码中,我添加了一个事件监听器 onbeforeunload 并调用了一个 saveState 函数。

但是我的 componentDidMount 工作正常。 onbeforeunloadsaveState 函数在页面加载时正常调用,而不是在页面刷新或退出时调用。

这里有什么问题?当有人退出或刷新页面时,我如何调用特定的函数或发出警报?

在上面的代码中

最佳答案

在顶层组件上附加 beforeunload 事件,并在 beforeunload 事件上使渲染为空,这将触发所有子组件的 componentWillUnmount。

import React, { PropTypes, Component } from 'react'

class App extends Component {
    componentDidMount() {
      window.addEventListener('beforeunload', () =>{
          this.setState({appended:true});
      });
    }
    render() {
      if(this.state.appended){
        return false;
      }else{
        return (<MyView />)
      }
    }
}


class MyView extends Component {


  componentWillUnmount() {
    this.saveState()
  }

  saveState() {
    alert("exiting")
  }

  render() {

    return (
        <div>
            Something
        </div>
    )
  }

}

export default MyView

希望这对你有用。

关于javascript - reactjs 在页面刷新或关闭时调用特定函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071690/

相关文章:

javascript - 使用 JavaScript 在 mongoDb 中查询

javascript - 使用位置对数组进行排序

javascript - Stripe 订阅 - 如何格式化 cancel_at 日期

reactjs - 根据父级的异步输入刷新 React 子功能组件

reactjs - 如何在无状态组件上设置 `contextType`

reactjs - React-select 在移动设备上原生选择

javascript - Vue3 + FabricJS - 在选择多个对象之前,无法调整/编辑使用 react 变量创建的对象

javascript - 在 React JSX 中使用 iframe 嵌入视频

javascript - 使用 React 提交后要清除的输入表单

javascript - 通过 AJAX 处理表单 - 避免生成 GET 和 POST 请求