📜  react 中的 prop 类型 - Javascript (1)

📅  最后修改于: 2023-12-03 15:34:39.363000             🧑  作者: Mango

React中的Prop类型

React是一个流行的JavaScript库,用于构建UI界面。在React中,组件可以通过 props 对象接收数据,这些数据可以是任何类型,包括字符串、数字、布尔值、对象、数组等。在组件内部,可以通过访问 props 对象的属性来使用这些数据。

Prop类型

React提供了一些预定义的 prop 类型,用来约束接收的数据类型。当组件接收到不符合要求的数据类型时,会发出警告信息,便于及早发现和解决问题。

以下是React支持的prop类型:

1. propTypes.array

表示传入的prop值必须是一个数组类型,数组中的每个元素可以是任何类型,如下:

MyComponent.propTypes = {
  items: PropTypes.array
};
2. propTypes.bool

表示传入的prop值必须是一个布尔值类型,如下:

MyComponent.propTypes = {
  checked: PropTypes.bool
};
3. propTypes.func

表示传入的prop值必须是一个函数类型,如下:

MyComponent.propTypes = {
  onClick: PropTypes.func
};
4. propTypes.number

表示传入的prop值必须是一个数字类型,如下:

MyComponent.propTypes = {
  age: PropTypes.number
};
5. propTypes.object

表示传入的prop值必须是一个对象类型,如下:

MyComponent.propTypes = {
  user: PropTypes.object
};
6. propTypes.string

表示传入的prop值必须是一个字符串类型,如下:

MyComponent.propTypes = {
  name: PropTypes.string
};
7. propTypes.node

表示传入的prop值必须是一个可以渲染为React节点的类型,如下:

MyComponent.propTypes = {
  children: PropTypes.node
};
Prop校验

React还提供了一个propType方法,可以自定义传入的prop值的类型和校验规则。如下:

MyComponent.propTypes = {
  // 传入的prop值必须是字符串类型,并且长度必须小于等于10个字符
  name: function(props, propName, componentName) {
    if(props[propName] && typeof props[propName] !== 'string') {
      return new Error(componentName + '传入的prop值必须是字符串类型');
    }
    if(props[propName] && props[propName].length > 10) {
      return new Error(componentName + '传入的prop值的长度必须小于等于10个字符');
    }
  },
};

在上述代码中,propName参数代表要校验的prop名称,componentName参数代表当前组件的名称。

总结

通过使用React的prop类型和prop校验功能,可以更好的保证组件接收到的数据类型和格式符合规范,提高组件的可复用性和可维护性。