我有一个组件说HomePage,我正在调用getCurrentLocation
来获取使用GPS的位置。该值将用于从下拉列表中选择一个值。然后,用户可以使用下拉列表更改值。
当我离开此页面然后使用
返回时const appHistory = createHashHistory();
appHistory.goBack();
再次执行构造函数和componentDidMount。因此,用户选择的值将丢失,我将再次获得默认值。
那么我在哪里放置初始化代码?我来自Ionic,其中有ionViewDidLoad之类的东西,只有当页面第一次加载时才会执行。是否存在相应的反应。
以下是我的代码
export class HomePage extends React.Component {
constructor(props){
super(props);
state = {
currentLocationCoordinates:[],
};
this.getCurrentLocation = this.getCurrentLocation.bind(this);
}
getCurrentLocation(){
navigator.geolocation.getCurrentPosition((success)=>{
console.log("Current Location: "+success.coords);
this.setState({
currentLocationCoordinates:[success.coords.latitude,success.coords.longitude],
userLocationCoordinates:[success.coords.latitude,success.coords.longitude]
});
});
}
}
componentDidMount(){
this.getCurrentLocation();
}
}
答案 0 :(得分:2)
我会避免使用CurrentDb.Execute "INSERT INTO MobileDeviceUserList(sUser, sDevice, sMobileNumber, sIMEINumber, sSerialNumber, sAccessories, sNewSIMNumber, sComments, sRecorded) " & _
"VALUES (" & Me.cboDevice & ",'" & Me.cboAccessories & ",'" & Me.txtUser & ",'" & Me.txtNumber & ",'" & Me.txtIMEI & ",'" & Me.txtSerial & ",'" & Me.txtNEWSIM & ",'" & Me.recRecorded & ",'" & _
Me.txtComment & "')"
。使您的组件具有弹性,以便重新渲染和重新安装。
通过它的声音,您将使用应用程序级状态容器,它将保持您的应用程序状态,无论您的组件是否已安装。
虽然其他状态容器确实存在,但大多数React社区都依赖于Redux。我建议看看Redux并使用它来保存这些位置详细信息作为Redux商店的一部分。然后,无论是否重新渲染,它们都可以作为道具在您的组件上访问。
答案 1 :(得分:1)
您需要使用ComponentDidMount()
以及检测组件是否已初始化的标志。你走在正确的轨道上。
componentDidMount(){
initialized ? "" : this.getCurrentLocation();
}