【react】解决props未校验报错

报错原因: 对于组件来说,props 是外来的,无法保证组件使用者传入数据的格式正确,如果传入的数据格式不对,可能会导致组件内部报错,而组件的使用者不能很明确的知道错误的原因 

校验前:

 校验后:

 显而易见:没有校验props的报错看起来让人摸不着头脑,校验props之后的报错看起来更直观,更有利于我们对于代码的维护。

切入正题!怎样校验props?

  1. 安装并导入 prop-types 包。

    npm i prop-types
    
    // 或者
    
    yarn add prop-types
  2.  使用 组件名.propTypes = {} 来给组件的 props 添加校验规则

  3. 校验规则通过 PropTypes 对象来指定。

    Test.propTypes = {
    	arr: PropTypes.array
    }

常见的校验规则

  1. 常见类型:number、string、bool、array、func、object。

  2. React 元素类型(JSX):element。

  3. 必填项:isRequired。

  4. 特定结构的对象:shape({})。

{
    // 常见类型
    // 函数
    fn1: PropTypes.func,
    // 必选
    fn2: PropTypes.func.isRequired,
    // 特定结构的对象
    obj: PropTypes.shape({
        // 字符串
        color: PropTypes.string,
        // 数值型
        fontSize: PropTypes.number
    })
}

props 默认值

好处: 即便外部不传递也不至于程序报错;简化代码(有可能就是有一些数据是很常用的,这样的话指定默认值外界不需要每次都传递啦

给props提供默认值有两种方式;

1. 通过 defaultProps 给组件的 props 设置默认值,在未传入 props 的时候生效。

// 当没有传入age属性的时候,给age设置一个默认值

import React, { Component } from 'react'
class Test extends Component {
    render() {
        return <div>{this.props.age}</div>
    }
}
// 通过 defaultProps 来设置默认值
Test.defaultProps = {
    age: 18,
}
export default Test

2. 利用ES6的设置默认值的方法

import React, { Component } from 'react'
class Test extends Component {
    render() {
        // 直接在解构的时候赋予默认值
        const { age = 18 } = this.props
        return <div>{age}</div>
    }
}

export default Test

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
props的navigation”通常是指在使用React-Navigation时,props中的navigation属性没有被正确传递或访问。React-Navigation是一个用于构建导航组件的库,它允许我们在应用程序中创建堆栈导航、选项卡导航和抽屉导航等功能。 当我们在应用程序中使用导航组件时,我们需要确保navigation属性被正确地传递和使用。一般来说,我们会将navigation属性从父组件传递给需要导航的子组件,以便子组件能够使用导航功能。 如果在使用导航时出现了'props的navigation',一些可能的原因和解决方法包括: 1. 检查传递给组件的props中是否包含navigation属性。我们需要确保导航属性在传递给需要导航功能的组件时没有丢失或被改变。可以在父组件中查看传递给子组件的props是否正确包含了navigation属性。 2. 检查导航组件是否正确加载和初始化。在使用React-Navigation时,我们需要正确加载和初始化导航组件,以便正确使用navigation属性。可以检查导航组件的代码和配置是否正确。 3. 检查导航组件的版本是否与应用程序的其他组件兼容。有时候,导航组件的版本与其他组件或依赖项的版本不兼容会导致navigation。可以尝试更新或降级导航组件的版本,以与应用程序的其他部分保持一致。 总之,'props的navigation'通常是指在使用React-Navigation时,导航属性没有被正确传递或使用。我们需要确保导航属性正确地传递给需要导航的组件,并且导航组件正确加载和初始化。如果问题仍然存在,可以进一步检查导航组件的版本和与应用程序的兼容性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值