Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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
Reactjs 我应该传递道具还是使用Redux_Reactjs_React Native_Redux_React Redux - Fatal编程技术网

Reactjs 我应该传递道具还是使用Redux

Reactjs 我应该传递道具还是使用Redux,reactjs,react-native,redux,react-redux,Reactjs,React Native,Redux,React Redux,因此,我有一个路由器组件,它位于我的应用程序屏幕的顶部。此组件中有一个菜单按钮,当加载某些其他页面/组件时,该按钮可见 单击此菜单按钮时,我需要将此信息传达给当前显示页面的组件,以便它可以显示上下文菜单 上下文菜单和菜单按钮都独立工作。然而,我对如何连接它感到困惑。如何有效地在这两个组件之间传递真/假切换?我以为我可以用道具来做,但是我觉得道具通过后你就不能更新了。这让我想到,我可能需要实现一个存储,这两个组件都可以读/写。这样,路由器组件将在每次单击菜单按钮时更新存储,而另一个组件可以根据存储

因此,我有一个路由器组件,它位于我的应用程序屏幕的顶部。此组件中有一个菜单按钮,当加载某些其他页面/组件时,该按钮可见

单击此菜单按钮时,我需要将此信息传达给当前显示页面的组件,以便它可以显示上下文菜单

上下文菜单和菜单按钮都独立工作。然而,我对如何连接它感到困惑。如何有效地在这两个组件之间传递真/假切换?我以为我可以用道具来做,但是我觉得道具通过后你就不能更新了。这让我想到,我可能需要实现一个存储,这两个组件都可以读/写。这样,路由器组件将在每次单击菜单按钮时更新存储,而另一个组件可以根据存储的状态更新其状态,我可以使用该状态切换菜单可见/隐藏

这有意义吗?如果有,最好的解决方法是什么

路由器代码:-父级,
menu()
单击菜单按钮时激发

const RouterRecipeComponent = () => {
  function menu() {
    console.log('clicky');
  }

  const MenuIcon =
  (<TouchableOpacity
    onPress={() => menu()}
    style={{ backgroundColor: 'red', width: 30, height: 30 }}
  >
    <Text>MENU</Text>
  </TouchableOpacity>);


  return (
    <Router
      sceneStyle={styles.sceneStyleWithSettings}
      navigationBarStyle={styles.navBar}
      titleStyle={styles.navBarTitle}
      barButtonIconStyle={styles.barButtonIconStyle}
    >
      <Scene
        key="Recipes"
        component={Recipes}
        title={content.recipe_heading}
        rightTitle="Menu" initial
        renderRightButton={() => MenuIcon}
      />

你能把你的密码寄出去吗?是的,你不应该改变道具,但如果它是路由器,它是一个创建组件,所以在这一点上你可以设置道具。一般来说,使用Redux之类的工具确实更好。但是不管怎样,如果没有看到代码,就很难说出来。代码补充道,谢谢你,你的redux/商店代码在哪里。你的想法是正确的。通过这种方式,您可以将状态作为应用程序状态共享。我还没有实现任何redux-我的问题是,对于这个应用程序,我是否需要一个flux系统,或者我是否可以使用更简单的方法来实现它。
renderSettingsPanel() {
    LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
    if (this.state.settingsPanel === true) {
      return (
        <View style={styles.settingsPanel}>
          {this.theSettings()}
        </View>
      );
    }
    return (
      <View style={[styles.settingsPanel, { top: -80, position: 'absolute', opacity: 10 }]}>
        {this.theSettings()}
      </View>
    );
  }