我的问题是react-router-dom重置了我的应用程序的不同状态.

我的标题也是一样,其中包括一个按钮来放大窗口,另一个按钮来缩小窗口.如果我属于" sticky "类别,我会放大窗口.当我导航到"音乐"或"收件箱"时,窗口大小将重置为原始大小.而且它不会保留按钮注入的css类.

应用程序

class 应用程序 extends React.Component {
    render() {
        return (
            <>

                <div className="window" id="window" >
                    <div className="window-body" >
                        <HeaderType />
                        <div className='window_inner'>
                            <左栏 />
                            <右侧列 />
                        </div>
                    </div>
                </div>

                <div className="addWindowBody" id="openWindow">
                    <a href='/'>
                        <div className="addWindow">
                            <div class="material-symbols-outlined" >
                                open_in_full
                            </div>
                        </div>
                    </a>
                </div>

                <div className="addDarkMode"></div>

            </>

        )
    }
}

export default 应用程序;

左栏

class 左栏 extends React.Component {
    render() {
        return (
            <>
                <div className="column_left">
                    <a href="/note" className='link'>
                        <div className="elements">
                            Prendre des notes
                            <span className="line"></span>
                        </div>
                    </a>

                    <a href="/inbox" className='link'>
                        <div className="elements">
                            Envoyer un message
                            <span className="line"></span>
                        </div>
                    </a>

                    <a href="/music" className='link'>
                        <div className="elements">
                            Ecouter de la musique
                            <span className="line"></span>
                        </div>
                    </a>

                </div>
            </>
        )
    }
}

export default 左栏;

右侧列

class 右侧列 extends React.Component {
    render() {
        return (
            <>
                <div className="column_right">
                    <BrowserRouter>
                        <Routes>
                            <Route path="/"  />
                            <Route path="/note" element={<Note />} />
                            <Route path="/inbox" element={<Inbox />} />
                            <Route path="/music" element={<Music />} />
                        </Routes>
                    </BrowserRouter>
                </div>
            </>
        )
    }
}

export default 右侧列;

推荐答案

使用toprops 上具有目标路径的Link组件,而不是具有href属性的原始锚定标记,向应用程序处理的其他路由发出内部导航操作.原始锚标记正在重新加载页面,从而重新加载应用程序.换句话说,React应用程序正在重新安装.

将ReactTree中的BrowserRouter组件移到更高的位置,以便为整个应用程序提供路由上下文.这使得左栏 103中的链接和右侧列中的路由访问相同的路由上下文以进行路由和导航.

例子:

应用程序

import { BrowserRouter, Link } from 'react-router-dom';

class 应用程序 extends React.Component {
  render() {
    return (
      <BrowserRouter>
        <div className="window" id="window">
          <div className="window-body">
            <HeaderType />
            <div className='window_inner'>
              <左栏 />
              <右侧列 />
            </div>
          </div>
        </div>
        <div className="addWindowBody" id="openWindow">
          <Link to='/'>
            <div className="addWindow">
              <div class="material-symbols-outlined">
                open_in_full
              </div>
            </div>
          </Link>
        </div>
        <div className="addDarkMode" />
      </BrowserRouter>
    );
  }
}

左栏

import { Link } from 'react-router-dom';

class 左栏 extends React.Component {
  render() {
    return (
      <div className="column_left">
        <Link to="/note" className='link'>
          <div className="elements">
            Prendre des notes
            <span className="line" />
          </div>
        </Link>
        <Link to="/inbox" className='link'>
          <div className="elements">
            Envoyer un message
            <span className="line" />
          </div>
        </Link>
        <Link to="/music" className='link'>
          <div className="elements">
            Ecouter de la musique
            <span className="line" />
          </div>
        </Link>
      </div>
    );
  }
}

右侧列

class 右侧列 extends React.Component {
  render() {
    return (
      <div className="column_right">
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/note" element={<Note />} />
          <Route path="/inbox" element={<Inbox />} />
          <Route path="/music" element={<Music />} />
        </Routes>
      </div>
    );
  }
}

Html相关问答推荐

springBoot + Thymeleaf:基于Locale设置页面语言

react :事件和转发器在特定代码段中不起作用

在NzMessageService中传递动态TemplateRef- Angular 15

如何将CSS滤镜仅应用于背景图像

柔性盒内的物品;t覆盖整个宽度,即使设置为100%

如何将tmap按钮和图例更改为位于页脚后面?

如何防止弹性项目溢出容器?

perl hdb 调试器:浏览器以错误的编码显示 UTF-8 源代码

在 flexbox 中使用 spacer 是否有效

我真的需要一个容器来让行和列正常工作吗? ( bootstrap 程序 v5)

如何从 div 内的图像中删除填充而不从其他所有内容中删除填充?

如何只为 Navbar 中的一个元素提供动画,其余元素没有使用 css 的动画

如何制作一个空的网格模板行来填充剩余空间?

在随机图像下对齐文本

在 html 邮箱的左侧和右侧制作多个元素很热门吗?

为什么图像会影响我的

shinydashboard 标题中的位置标题

弹出窗口溢出溢出:自动,我不明白为什么

Bootstrap Grid System col 无法正常工作

是否可以使用纯 css 创建具有斜角效果的锯齿形边缘?