代码之家  ›  专栏  ›  技术社区  ›  Nina

反应:检查道具是否未定义

  •  0
  • Nina  · 技术社区  · 4 年前

    如果一个prop是未定义的,我想在componentdidpupdate中做一些事情,但是,我不能,因为我只是得到了错误 无法读取未定义的属性“serial”

    这就是我所累的,但它不起作用-我得到了错误:

    componentDidUpdate(prevProps) {
        if (typeof this.props.location.state.serial == "undefined"){
    const database = db.ref().child("Devices/" + prevProps.location.state.serial);
    ...
    

    1 回复  |  直到 4 年前
        1
  •  0
  •   Hamza Hmem    4 年前

    首先你应该在 location location.state 因为它们可能是 undefined 因为此方法是在父组件的状态或属性中的任何更新之后立即调用的。你可以看到 the Official doc . 你应该这样做:

    componentDidUpdate(prevProps) {
        if (this.props.location && this.props.location.state &&  typeof this.props.location.state.serial === "undefined"){
    const database = db.ref().child("Devices/" + prevProps.location.state.serial);
    ...
    

    Optional chaining :

    componentDidUpdate(prevProps) {
        if (typeof this.props.location?.state?.serial === "undefined"){
    const database = db.ref().child("Devices/" + prevProps.location.state.serial);
    ...