【问题标题】:React Native StackNavigator default props for screensReact Native StackNavigator 屏幕的默认道具
【发布时间】:2019-03-31 03:32:22
【问题描述】:

我在我的应用程序中使用了 2 个单独的 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 />

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

【问题讨论】:

    标签: react-native redux reducers stack-navigator


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多