Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 反应本机导航参数和德米特定律_React Native_React Native Navigation_Law Of Demeter - Fatal编程技术网

React native 反应本机导航参数和德米特定律

React native 反应本机导航参数和德米特定律,react-native,react-native-navigation,law-of-demeter,React Native,React Native Navigation,Law Of Demeter,当您想要访问通过导航(react native navigation)传递的屏幕组件中的参数时,您必须这样做,例如: this.myParameter = this.navigation.state.params.myParameter 这是否违反了德米特法?如果你以后想使用深度链接呢 解决方案是创建一个包装器组件,将导航参数映射为道具 事实上,德米特定律(或最小知识原则)要求您的组件对导航对象的内部结构一无所知 在我看来,最好的情况是传递给组件的导航对象已经有了一个名为params()的函

当您想要访问通过导航(react native navigation)传递的屏幕组件中的参数时,您必须这样做,例如:

this.myParameter = this.navigation.state.params.myParameter 
这是否违反了德米特法?如果你以后想使用深度链接呢


解决方案是创建一个包装器组件,将导航参数映射为道具

事实上,德米特定律(或最小知识原则)要求您的组件对导航对象的内部结构一无所知

在我看来,最好的情况是传递给组件的导航对象已经有了一个名为
params()
的函数,该函数将向您返回一个参数映射

但是,由于情况并非如此,您可以自己添加它-或者通过引入一层间接寻址(通过您自己的函数,看起来像
screenParamsFrom(导航)来添加)
,或者您可以尝试连接到导航对象,并通过将导航对象提供给根导航器来添加函数:

<MyRootNavigator navigation={addNavigationHelpers({
    dispatch: dispatch, 
    state: state, 
    params: paramsFunction})}/>

但是,在这种情况下,您必须自己管理状态(通过Redux或其他类似机制。请参阅)