ReactJS一次初始化

时间:2018-06-12 11:01:52

标签: javascript reactjs ecmascript-6 react-redux

我有一个组件说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();
}


}

2 个答案:

答案 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();
}