reactjs - 使用反应从另一个组件中的一个组件获取更新的值
问题描述
我有一个带有简单计数器的应用程序。计数器工作正常,但我无法在About
组件中获取计数值,可以在 url 中添加该值/about
。要从counter
About.js 组件中的 store 中获取值,我做了:
const selector = useSelector(state => state);
return <p>about page NR: {selector.counter}</p>...
当我单击主组件中的计数器时,如何实时访问关于组件中的计数值?
现在我刚刚在codesanbox中重现了我的问题,在我的应用程序中,我在浏览器中打开了两个页面。当我增加主组件中的值时,将选项卡切换到 About 组件,我只看到初始 vaue 0
。那么,可能是什么问题?以及如何解决?
预期场景:当我单击主组件中的计数器以查看关于组件中的更新值时,两个页面都打开了。
演示:https ://codesandbox.io/s/competent-hawking-wu1df?file=/src/App.js:174-222
解决方案
您使用 url 更改 Route 的问题是,当您这样做时,页面会刷新,导致数据被清除。
如果您使用Link
from 'react-router 使用页面导航,则此代码将按预期工作。
为了在页面刷新时保留 reducer 更改,您可以将其存储在 localStorage 中并在加载时再次检索它。
此类库可redux-persist
帮助您处理此类案件
使用 redux-persist,你的代码看起来像
import { PersistGate } from "redux-persist/integration/react";
ReactDOM.render(
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Router>
<Switch>
<Route exact path="/">
<App />
</Route>
<Route path="/about">
<About />
</Route>
</Switch>
</Router>
</PersistGate>
</Provider>,
rootElement
);
store.js
import { createStore } from "redux";
import { persistStore, persistReducer } from "redux-persist";
import { reducer } from "./reducer";
import storage from "redux-persist/lib/storage";
const persistConfig = {
key: "root",
storage
};
const persistedReducer = persistReducer(persistConfig, reducer);
let store = createStore(persistedReducer);
let persistor = persistStore(store);
export { store, persistor };
推荐阅读
- javascript - 无法使用 jquery 选择更改的图像 src
- ios - 尝试从 API 加载描述时我错过了什么?
- python - 由熊猫数据框创建的图表的两条线之间的不同颜色阴影
- pdf - itextpdf重叠长字符串
- python - 在 Python 中引发异常类
- javascript - 未处理的承诺拒绝:错误:地图容器已初始化
- python - 如何使用 SQL Alchemy 在 SQL Server 中创建图形节点表?
- python - 使用 BeautifulSoup 附加表,使其工作?
- flutter - 数量增加减少显示计数器字段
- javascript - 如何使用 Vuetify.js 的 v-simple-table 将标题放在第一列?