启动应用程序后,_isMounted在应用程序类中是否始终为true?

时间:2019-10-18 00:06:58

标签: reactjs react-native

在我的React Native 0.61.1(“反应”:“ 16.9.0”)应用中,App类在App.js中定义为(不使用Redux):

class App extends React.Component {
  state = {
    group_id:"",
    grp_name:''
  }
  _isMounted = false,

  componentWillUnmount() {
    this._isMounted = false;
  }

  componentDidMount() {
    this._isMounted = true;
  };

  updateGroup = (group_id, grp_name) => {
    console.log("In updateGroup : ", group_id);
    if (this._isMounted) this.setState({
      group_id:group_id,
      grp_name:grp_name,
    });
  };




render() {

const AppContainer1 = this.bottomTabScreen(); 
const AppContainer = createAppContainer(AppContainer1)
return <AppContainer />;

} }

bottomTabScreen类中的方法App定义为:

bottomTabScreen = () => {

const EventWithSelf = (props) => (<Event {...props}  />) 
const GroupWithSelf = (props) => (<Group {...props}  updateGroup={this.updateGroup} />);


return createBottomTabNavigator(
  {
    Event: {
      screen: EventWithSelf,
      navigationOptions: {
        title: "Event",
      },
    },
    Group: {
      screen: GroupWithSelf,
      navigationOptions: {
        title: "Group",
      },
    },

  }, bottomTabNavOptions('Event')
);

};

updateGroup方法作为道具传递到Group组件中。

_isMountedfalse类中最初定义为App,在true中被置为componentDidMount,在componentWillUnmount中被置为假。

updateGroup被称为子组件Group时,this._isMounted类中App的值是什么?我假设_isMounted在应用启动后一直都是真实的,因此updateGroup将能够更新App类中的状态(否则将无法进行更新需要状态更新时)。但是我不确定这是否是正确的假设。或者,在调用setState的状态之前,无需检查App组件的安装状态。

0 个答案:

没有答案