【问题标题】:React-Router Reloads Component When Navigating Away From ItReact-Router 在离开时重新加载组件
【发布时间】:2023-03-03 22:34:01
【问题描述】:

我正在努力了解 React 和 Redux。我目前有这样的设置:

商店的状态有一个“activeAction”属性,它接受一个数字。 Page 组件使用“activeAction”来确定应该在应用程序中心显示哪个组件,并根据当前 URL 进行更改。例如,'/Home' 是 activeAction: 0,而 '/About' 是 activeAction: 1

/Home 的组件称为 BlogRoll,该组件中有实际的逻辑来显示来自博客 api 调用的帖子。我正在调用该操作以在组件 componentDidMount 函数中显示帖子。 /About 的组件只有一个显示“内容区域”的渲染函数......现在只是一个占位符。

我的导航设置为链接组件:

<div className="NavItem">
   <Link to={'/Home'} activeClassName="ActiveMenuItem">Home</Link>
</div>
<div className="NavItem">
   <Link to={'/About'} activeClassName="ActiveMenuItem">About</Link>
</div>

我遇到的问题是在单击Home Link(工作正常)然后单击About Link 之后,BlogRoll 组件在转到 About 组件之前被重新加载。我通过在BlogRoll.componentDidMount() 中设置一个断点来知道这一点。我点击转到关于但在此之前它会重新加载 BlogRoll。

这是故意行为吗?它似乎不应该这样做,但我仍在学习,可能还没有完全理解组件生命周期。

感谢您的帮助!

【问题讨论】:

    标签: javascript html reactjs redux react-router


    【解决方案1】:

    这是一种故意的行为。

    React-router 中,如果组件没有被渲染,它就会被卸载。

    您可以在react-router repo 中阅读有关组件生命周期的更多信息。

    如果您希望组件中的状态保持不变,您可以使用 Redux 存储。

    【讨论】:

    • 卸载是否触发 componentDidMount()?我想避免重新安装当时不需要的组件。导航到 /About 应该卸载 BlogRoll 然后 Mount About。
    • 没有。 componentDidMount() 应该在您在 About 之后返回 BlogRoll 时触发。需要查看代码以了解发生了什么
    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2016-05-14
    • 2019-01-18
    • 2019-08-14
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多