【问题标题】:react unmouting when navigate away导航离开时做出反应
【发布时间】:2015-04-14 15:43:45
【问题描述】:

我有这个反应组件,当我渲染它时它会起作用

var Postlist = React.createClass({
getInitialState: function () {
    socket.on("new",this.Updatepost);
    return {posts: [], hasMore: true, onView: 5};
},
componentWillMount: function () {
    this.state.posts.push(this.props.newposts);
    this.setState({posts: this.props.newposts});
},
$.ajax({
    url: 'load_posts.php',
    dataType: 'json',
    success: function (data) {
        var x = data;
        React.render(<Postlist newposts={x} />,document.getElementById("main"));
    }.bind(this),
    error: function (xhr, status, err) {
        console.error(this.props.url, status, err.toString());
    }.bind(this)
});

但我使用历史 API 在页面之间导航

那么我如何在导航时卸载和重新安装反应组件以及如何在反应代码之外卸载它

【问题讨论】:

  • 您是否考虑过使用任何对 React 友好的路由组件?

标签: url-routing reactjs html5-history


【解决方案1】:

我不认为你能做到这一点,react 自己处理组件的生命周期,所以我认为解决这个问题的方法应该是在浏览器历史记录中实际保存以前的状态.. 所以当你来回走,你可以告诉 react 应该通过推送一个“新”状态来更新

【讨论】:

  • 好的,我只想对历史做出反应以正常工作
  • 监听事件 window.onpopstate ,当该事件被触发时,这意味着您在历史记录中返回或前进......所以您可以使用 React.render() 再次“重新渲染”您的组件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2022-08-18
  • 2012-03-20
相关资源
最近更新 更多