【问题标题】:react-native componentWillAppear doesn't fire?react-native componentWillAppear 不会触发?
【发布时间】:2017-11-11 15:46:10
【问题描述】:

我有一个主屏幕作为我的堆栈导航器的根。我尝试将componentWillAppear 函数添加到我的 Home.js 反应组件,但是当我通过按返回按钮从我的联系人屏幕返回该屏幕时它不会触发。

import React, { Component } from 'react';
import {StackNavigator} from 'react-navigation';
import Contact from './Contact';

class Home extends Component {
  static navigationOptions = {title:'Home'};

  componentWillAppear()
  {
      console.log('hello');
  }
  render()
  {
     return <View></View>;
  }
}

let Router = 
{
  Home: {screen: Home},
  Contact:{screen:Contact}
}

const Navigator = StackNavigator(Router);
export default Navigator;

当您从 Stacked Navigator 的子屏幕返回时,每次我的主屏幕变得可见时,是否会始终触发另一个事件处理程序?

【问题讨论】:

  • 这是我认为的预期行为。当您按下屏幕时,前一个屏幕不会卸载,因此返回不会在前一个屏幕上触发任何内容。
  • 有没有类似 componentOnFocus() 或 componentOnVisible() 之类的东西?
  • 我认为没有。如果您需要在上一个屏幕上做某事,您可以使用 2 个选项。第一个选项是使用 redux 或类似的包并触发一个操作来更新以前的组件道具,或者第二个选项是使用一个自定义的后退按钮,该按钮执行类似this answer 然后this.props.navigation.goBack()

标签: react-native


【解决方案1】:

根据 bennygenel 的评论:

我认为没有。如果您需要在上一个屏幕上做某事 您可以使用 2 个选项。第一种选择是使用 redux 或 类似的包并触发操作以更新以前的组件 道具或第二个选项是使用自定义后退按钮 类似this answer 然后 this.props.navigation.goBack()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 2021-06-15
    • 2022-12-28
    • 1970-01-01
    相关资源
    最近更新 更多