【发布时间】:2017-02-21 17:43:42
【问题描述】:
我正在使用 react-redux,但我遇到了刷新页面时我的 redux 状态丢失的问题。
在我继续之前,这是我可能搞砸的场景。
问题一:我可以连接到多个布局吗?
我有一个仪表板和一个“应用”布局。两者都有不同的布局。我以相同的方式连接两者:
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actionCreators from '../actions/actionCreators';
function mapStateToProps(state) {
return {
profile: state.profile,
child: state.child,
}
}
function mapDispachToProps(dispatch) {
return bindActionCreators(actionCreators, dispatch);
}
const LayoutApp = connect(mapStateToProps, mapDispachToProps) (DashboardLayout);
export default LayoutApp;
仪表板连接得很好。我可以在需要时点击减速器并更新商店,但是仪表板链接到应用程序以进行数据操作的某些部分供您使用。当它链接时,我按预期获取道具中的数据,但是一旦应用布局中的任何页面刷新,我就会丢失 maptoprops 发送的道具。
我尝试将其合并到一个主布局中,但这似乎具有相同的效果。当我第一次收到数据时,我也尝试立即保存状态,但刷新时它似乎也丢失了,这让我认为它正在重置它。
总结: - DashboardLayout(连接到redux) - AppLayout(连接到redux)但是在页面刷新后它会丢失Applayout的道具并且需要的数据消失了。
【问题讨论】:
-
该状态仅在您的初始页面加载的生命周期内存在。您可以使用
redux-persist保持状态并对其进行再水化。 -
请注意,@MarioTacke 提到的 redux-persist 只是您拥有的几十个选项之一。你可以将你的状态树持久化到服务器、本地存储、cookie,无论你想要什么(并且适合媒体)。重点仍然存在 - 默认情况下,状态树无法自行重新加载页面,它需要保存在某个地方。
-
为什么不在这两个布局之上的层次结构中创建一个状态呢?
-
为什么不在这两个布局之上的层次结构中创建一个状态呢?
标签: reactjs redux react-redux