javascript - 在 react 导航中刷新 contentComponent

标签 javascript android ios react-native react-navigation

我正在使用 React-Navigation我通过使用 React-Navigation 的 contentComponent 来使用自定义抽屉的功能。

const DrawerNavigation = DrawerNavigator({
  DrawerStack: { screen: DrawerStack }
}, {
  contentComponent: DrawerComponent,
  drawerWidth: 300
})

这里的 DrawerComponent 是我的自定义抽屉导航,我在其中使用了自定义导航项,例如用户名、个人资料图片、电子邮件地址和其他菜单。

现在,每当用户更新他们的个人资料时,我想刷新我的 DrawerComponent,但我找不到任何方法来做到这一点。任何人都可以建议我实现这个的好方法吗?

最佳答案

这里有几个选项,所有选项都与您希望如何实现状态管理有关。

首先,一种解决方案是让您的用户状态位于创建 DrawerNavigator 的组件中,并将其传递给您的自定义抽屉组件。这带来了必须在状态更改时重新创建导航器并创建闪烁的缺点。我不建议使用此解决方案,但值得一提。

你也可以使用 React Context ,将您的用户状态放在顶级组件中,创建一个提供者将用户作为值传递给它,并使您的抽屉成为此上下文的使用者。这样,每次用户更改您的抽屉组件时都会重新呈现。


我个人使用的是 Redux 将我的 Drawer 直接连接到我的全局状态。它涉及一些设置,但最终是值得的。根组件可能如下所示:

import React from 'react'
import { Provider } from 'react-redux'

export default () => (
  <Provider store={store}>
    <App />
  </Provider>
) 

store 的结果是:

import { createStore, combineReducers } from 'redux'
import reducers from './reducers'

const store = createStore(combineReducers(reducers))

您的 reducer 将成为您应用的状态,其中一个将专门用于您的用户数据。

那么你的 Drawer 组件可能是:

import React, { Component } from 'react'
import { View, Text } from 'react-native'
import { connect } from 'react-redux'

@connect(({ user }) => ({ user }))
class Drawer extends Component {
  render () {
    const { user } = this.props
    return (
      <View>
        <Text>My name is {user.name}</Text>
      </View>
    )
  }
}

export default Drawer

现在,每次您更改 user reducer 时,此 Drawer 组件都会重新呈现。

关于 Redux,您应该了解一些事情,因此您可能应该阅读一下 Getting Started docs .

关于javascript - 在 react 导航中刷新 contentComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46537719/

相关文章:

javascript - 设置 select2 输入的默认值

javascript - 如何检查所有属性值是否为真?

java - Location.getLatitude 方法返回非精度 double ,这对 GPS 坐标不利

android - 底部导航+抽屉+广告

ios - 新的 iOS 目标是应用内购买

javascript - 需要使用箭头键在搜索建议中移动

javascript - 如何使用正则表达式验证 Javascript 中的日期?

android - 提示的字体系列在 TextInputLayout 中无法正常工作

objective-c - 从表选择加载另一个 View 而不丢失导航(返回)

ios - 链接器命令失败,退出代码为 1 xcode 6.4