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