需要有关React Native和Redux以及Navigation的一些概念的帮助

问题描述 投票:4回答:1

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

  1. 导航器中的提供者与道具

有什么区别以及设置导航器并将存储传递到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状态的更改或让我将组件状态绑定到redux状态。

state推送actions时,将passProps(Redux商店)和newScene作为Navigator传递,然后newScene调度动作并正确执行,状态更新,但是......不会重新渲染场景。

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

在这种情况下,是否有关于最佳实践的示例?

  1. props vs connect在同一个Scene

在相同的Scene,从顶部到底部组件,这是通过redux state(不是在谈论component state)的最佳方法,用'smart' container中的'connect'包裹react-redux中的组件,或者通过孔场景为props

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