javascript React:只重新加载该页面所在页面的一部分?

ffx8fchx  于 2022-12-17  发布在  Java
关注(0)|答案(1)|浏览(200)

我怎样才能只重载我的路由/页面所在的区域,而让它周围的所有其他组件保持完全相同?目前它正在重载整个页面?我不认为这是SPA所做的。
我需要播放器保持运行,而不是中断音频由于页面重新加载

render() {
        return (
            <div className="flex h-screen flex-col justify-between">
                <main className="flex flex-1 bg-gray-100">
                    <div className="sidebar-1 w-64 bg-gray-50">
                        <Sidebar />
                    </div>
                    <div className="content flex-1 p-8">
                        <BrowserRouter>
                            <Routes>
                                <Route element={<ProtectedRoute />}>
                                    <Route path="/" element={<Home queueItems={this.state.queueItems} />} exact/>} />
                                    <Route path="/search" element={<Search />}/>} />
                                </Route>
                                <Route element={<Login />} path="/login" />
                            </Routes>
                        </BrowserRouter>
                    </div>
                </main>
                {this.state.queueItems.length > 0 && <footer className="fixed bottom-0 w-full bg-zinc-300 p-4 text-black">
                    <Player rerenderParentCallback={this.rerenderParentCallback} queueItems={this.state.queueItems} />
            </footer>}
            </div>
            );
    }
myss37ts

myss37ts1#

但是你为什么需要重新加载呢?通过你的代码更新组件会使必要的部分重新加载它们的渲染,这样所有的东西都会随着你提供的数据而更新,这就是react的工作原理,你通常不需要重新加载任何东西,就像你说的,这不是SPA的工作原理。
您可以在此处阅读有关React生命周期的更多信息:
https://reactjs.org/docs/state-and-lifecycle.html
如果你需要重新渲染一个组件,你可以在这里找到答案:
Can you force a React component to rerender without calling setState?

相关问题