【问题标题】:Way to dynamically set a React Navigation screen title using MobX store value?使用 MobX 存储值动态设置 React Navigation 屏幕标题的方法?
【发布时间】:2023-03-29 03:20:01
【问题描述】:

在我的默认 React Navigation 选项卡屏幕上,我想将屏幕的标题设置为来自 MobX 商店的值。据我了解,这样做的唯一方法是通过参数传递值——所以我不能只将 MobX 值放在“标题:”字段中......但因为这是“默认”屏幕,我'没有通过它任何东西。

默认屏幕:

export default class HomeScreen extends Component {
  static navigationOptions = ({ navigation, screenProps }) => ({
    title: `This is ${navigation.state.params.title}`,

我尝试在 componentWillMount 期间使用 setParams,但 console.log 显示它一定发生得太晚了,所以我在标题中得到一个空对象。

知道怎么做吗?

【问题讨论】:

    标签: react-native react-navigation mobx


    【解决方案1】:

    今天遇到同样的问题并解决了。

    只需将您的 navigationOptions 更改为函数而不是对象,这样它就会重新评估状态变化。正如https://reactnavigation.org/docs/intro/headers#Header-interaction-with-screen-component 的手册所述,这是为您提供的解决方法:

    static navigationOptions = ({ navigation }) => {
      const { params = {} } = navigation.state;
      const title = `This is ${params.title}`;
      return { title };
    };
    

    【讨论】:

    • 在使用 mobx 之后如何更改 title 的值?看来您需要使用navigation.setParams
    • @JoshuaPinter 我实际上使用了 MobX 的 screenProps 来在他们的个人资料页面的标题中显示用户名。当我更新我的商店时,一切正常,还没有尝试使用 setParams...
    • 有趣。这可能效果更好。 setParams 有效,但有点笨拙。
    • 希望看到使用 screenProps 的完整解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    相关资源
    最近更新 更多