我有两个屏幕,A 和 B。它们都使用相同的全局状态
<Text style={Styles.textScoreHeader}>{this.props.profleInfos.Points}</Text>
使用这个:
const mapStateToProps = (state) => {
return {
folder: state.account.folder,
theme: state.account.theme,
whichAccount: state.account.whichAccount,
profleInfos: state.account.profleInfos,
};
};
export default connect(mapStateToProps)(ScreenA);
对于屏幕 A 和:
const mapStateToProps = (state) => {
return {
folder: state.account.folder,
theme: state.account.theme,
whichAccount: state.account.whichAccount,
profleInfos: state.account.profleInfos,
};
};
export default connect(mapStateToProps)(ScreenB);
对于屏幕 B。
在屏幕 AI 中单击一个按钮转到屏幕 B,我在其中更改profleInfos.Points
全局状态,如下所示:
_Transaction(folder, apiName, code) {
Transaction(folder, apiName, code).then(data => {
if (data.success) {
var theProfleInfos = this.props.profleInfos
theProfleInfos.Points = data.LoyPoints //changing profleInfos.Points
const actionProfileInfos = { type: "SET_PROFILE_INFOS", value: theProfleInfos }
this.props.dispatch(actionProfileInfos) // dispatch the action
}
this.setState({ scanningResponse: data, isLoading: false })
})
};
我使用this.props.dispatch(actionProfileInfos)
代替mapdispatchtoprops
(告诉我是否必须这样做,但我更喜欢这种方法)。
在此屏幕 (B) 中,我显示this.props.profleInfos.Points
并且它工作正常(扫描后值更改)但是当我返回屏幕 A(后退按钮)时,this.props.profleInfos.Points
它不会刷新。
PS。我在抽屉里有相同的值,如果我打开抽屉,我可以看到相同值的变化,可能是因为我“打开”了抽屉