需要有关ReactNative和Redux以及Navigator的一些概念的帮助

时间:2016-02-21 11:21:51

标签: reactjs react-native redux navigator react-redux

在这个场景中进行了几次测试之后,我遇到了一些我无法回答的问题,所以我请求帮助澄清我的概念。

  1. 导航器中的提供者与道具
  2. 有什么区别,设置导航器并将商店传递到React Native应用程序的不同场景的最佳方法是什么

    export default class App extends Component {
      render () {
        return (
          <Provider store={store}>                        //<-- here
            <Navigator style={{flex: 1}}
            initialRoute={{ component: MainContainer }} //<-- here 
    
              renderScene={ (route, navigator) => {
                const Component = route.component;
                return (
                  <View style={{flex: 1, marginTop:40}}>
                    <Component navigator={navigator} route={route} {...route.passProps} />
                  </View>
      ...
    

    MainContainer与react-redux Component函数中的connect相关联,将道具和操作传递给props

    是否可以更好地访问上下文或道具?

    VS

    const store = createStoreWithMiddleware(reducer, initialState); //<-- here
    export default class App extends Component {
    render () {
      return (
        <Navigator style={{flex: 1}}
          initialRoute={{ component: MainComponent }}
    
          renderScene={ (route, navigator) => {
          const Component = route.component;
          return (
            <View style={{flex: 1, marginTop:40}}>
              <Component 
                 navigator={navigator} 
                 route={route} 
                 {...route.passProps} 
                 store={store}                      //<-- here
                   />
           </View>
        ...
    
    1. 在组件Scene中,(不包装为智能容器)如何设置侦听器关于 redux状态的更改或让我绑定组件状态到还原状态。
    2. state中推送actions,然后passProps调度操作时,将newScene(Redux商店)和Navigator传递为newScene并且正确执行,状态为update,但是......不会重新渲染场景。

      我是否必须将状态组件绑定到Redux状态才能看到屏幕上反映的更改?

      此方案中是否有关于最佳做法的示例?

      1. props connect 相同的Scene
      2. 相同的Scene 从顶部到底部组件,这是传递redux state的最佳方法(不是在讨论{{ 1}})将component state中的某个组件包裹在&{39; 'smart' container&#39;来自connect,或将洞穴场景传递为react-redux

1 个答案:

答案 0 :(得分:2)

  1. 应该使用第一个解决方案,因为提供者应该是最外面的组件(以便下面的所有内容都可以正确连接)。
  2. 您可以在componentDidReceiveProps或(我更喜欢的)上运行回调,只需连接需要访问商店的组件即可。这正是redux的用途。不这样做的唯一原因是,如果您希望将组件与其他商店内容重复使用(真正具有代表性的组件)
  3. 这很大程度上取决于应用程序和组件的深度,但总的来说,这是完全可以的。您也可以将信息作为道具传递,但随着您的应用程序变得越来越大,您可能需要传递大量道具,这可能会模糊您组件的真实意图