React Native StackNavigator屏幕默认道具



我在应用程序中使用两个独立的StackNavigators,并在if条件结构中呈现其中一个。例如:

if(this.props.authToken)//authToken is a state object setting in one of my reducers
return <AppNavigator />
else
return <AuthNavigator />

请看,我几乎在AppNavigator的每个屏幕中都会使用authToken对象。

我目前使用的一种方法是在每个屏幕导出语句中的"mapStateToProps"函数中获取它。

class SomeScreen extends React.Component {
render() {
return (
<View><Text>Some UI {this.props.authToken.userName} </Text></View>
);
}
}
const mapStateToProps = state => {
return {
//This line that i have to write in every screen
authToken: state.app.authToken
};
};
const mapDispatchToProps = dispatch => {
return {...}
};

export default connect(mapStateToProps, mapDispatchToProps)(SomeScreen);

但我不喜欢这样。因此,如果有一个对象可以在我的大多数导航器屏幕中使用,我希望将它从我的根组件传递到呈现导航器组件,如:

if(this.props.authToken)//authToken is a state object setting in one of my reducers
return <AppNavigator authToken={this.props.authToken} someOtherCommonProp={{....}}/>
else
return <AuthNavigator />

因此,我的问题是,解决这个问题的最佳做法是什么。

我认为,如果authToken不会随时间变化或通过外部方式进行更新,您就不必在redux状态下使用它,所以在我看来,您的解决方案看起来不错。请告诉我。

最新更新