【问题标题】:Does react state change when i refresh a page当我刷新页面时反应状态是否改变
【发布时间】:2025-12-30 22:50:04
【问题描述】:

`class App extends React.Component {
  constructor() {
    super();
    this.sideBarToggleHandler = this.sideBarToggleHandler.bind(this);
    this.state = {
      sideBarOpen: true,
      backDropOpen: false,
      isPrim: true,
    }
  }
  componentDidMount() {
    console.log('componentdidmount')
  }

  sideBarToggleHandler = () => {
    this.setState((prevState) => {
      return { sideBarOpen: !prevState.sideBarOpen }
    })

    this.setState((prevState) => {
      return { backDropOpen: !prevState.backDropOpen }
    })
  }

  changeTheme = () => {
    this.setState((prevState) => {
      return { isPrim: !prevState.isPrim }
    })
  }

  render() {
    let backDrop;

    if (this.state.backDropOpen) {
      backDrop = <SideDrop />
    }

    return (
      <div className="App">
        <SimpleBar style={{ height: '100vh' }}>

          <ThemeSwitcher changeTheme={this.changeTheme} />

          <ToggleBar sideBarToggleHandler={this.sideBarToggleHandler} />

          {backDrop}

          <SideBar sideBarOpen={this.state.sideBarOpen} />

          <Switch>
            <Route exact path='/' component={HomePage} />
            <Route exact path='/about' render={() => <AboutPage isPrim={this.state.isPrim} />} />
            <Route exact path='/resume' render={() => <ResumePage isPrim={this.state.isPrim} />} />
            <Route exact path='/portfolio' component={PortfolioPage} />
            <Route exact path='/blog' component={BlogPage} />
            <Route exact path='/contact' component={ContactPage} />
          </Switch>
        </SimpleBar>
      </div>
    );
  }
}`

我想根据状态对象更改我的网站的主题,但是当第一次更改主题并导航到另一个页面组件时,它会变回原始主题,我添加了我的应用程序组件代码它对页面使用反应路由器

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    React 状态只存在于前端,这意味着每次刷新页面时都会创建一个新状态。您可以使用 React router 来避免在页面之间丢失状态,它会在不实际刷新站点的情况下处理您的多页。
    您还可以使用本地存储来存储您的状态:https://*.com/a/28314706,
    虽然我会做这两件事

    【讨论】:

    • 我实际上正在使用反应路由器,但是当我浏览页面时,应用程序组件会重新呈现,所以我该如何防止这种情况发生
    • 或许你可以贴一些代码,让我看看
    • 您发布的代码看起来是正确的,也许问题不在这里。你是如何在页面之间切换的?
    • 我正在使用标签通过侧边栏在页面之间切换
    • ` a> `
    【解决方案2】:

    通常刷新时无法保存状态值,您可以将其保存在本地存储中。如果您使用其中一个路由库页面不应该刷新。

    【讨论】:

    • 是的,我正在使用 react 路由器,但是当我在页面之间导航时应用程序会不断刷新,如果您可以看一下,我已经添加了应用程序组件代码,谢谢!