【问题标题】:React Router: How to re-render the page when the user presses the back buttonReact Router:当用户按下后退按钮时如何重新渲染页面
【发布时间】:2020-02-20 10:15:09
【问题描述】:

我希望有一个简单的答案。我尝试了不同的方法并进行了全面搜索,但仍然无法解决问题。

所以! 使用 React-Router-Dom,我有一个带有徽标的父组件,该徽标位于固定位置并在所有子组件/页面上都可以看到。

class Parent extends React.Component {
  render() {
    return (
       <div>
        {window.location.pathname==='/contact' ? 
         null :
         <div className='originalLogo'></div>
        }
       </div>

) } }

但是在Contact页面上,logo被修改后的版本替换了,原来的设置为null。

class Child extends React.Component {
   render() {
     return (
      <div className='modifiedLogo'></div>
  )

} }

当用户通过菜单手动点击联系页面时,我能够捕捉到这种变化。但这里是问题开始的地方。如果用户打开菜单栏并单击主页,则徽标会变回其原始版本。但是,如果用户从联系页面单击浏览器上的“返回”,则徽标将保留为修改版本而不是原始版本。直到用户在首页点击菜单,由于(菜单显示的)状态改变,导致页面重新渲染,然后logo又回到原来的形式。

所以我的问题是,当用户单击浏览器上的“返回”按钮时,如何重新呈现页面?

【问题讨论】:

    标签: javascript html css reactjs react-router


    【解决方案1】:

    您不仅可以使用SwitchRoute 组件来渲染页面,还可以渲染页面部分。这应该有助于解决问题。

    import { Switch, Route } from 'react-router-dom';
    
    class Parent extends React.Component {
        render() {
            return (
                <Switch>
                    <Route path="/contact" render={() => null} />
                    <Route render={() => <div className='originalLogo' />} />
                </Switch>
            );
        }
    }
    

    【讨论】:

    • 这绝对有帮助!谢谢!我最终为徽标所做的是使用三元运算符来设置徽标的 z-index。在联系页面上,原始徽标的 z-index 变为 -1,然后修改后的徽标变为 1。然后在主页上,原始徽标保持为 1。我无法使用徽标的渲染功能,因为我必须为它呈现的每个页面重复该代码,而不仅仅是联系页面。我最终使用了菜单栏本身的渲染功能,因为联系页面是唯一改变颜色的页面。再次感谢
    猜你喜欢
    • 2017-07-01
    • 2018-09-30
    • 1970-01-01
    • 2011-06-05
    • 2012-04-16
    • 1970-01-01
    • 2017-06-11
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多