美文网首页React
react 组件和props传参、props默认值、props验

react 组件和props传参、props默认值、props验

作者: 暴躁程序员 | 来源:发表于2022-04-02 11:14 被阅读0次

1. 函数组件 (无状态组件)

组件名称首字母大写

1. 创建并使用组件

function Component1(props) {
  return <h1>我是组件1</h1>;
}

function App() {
  return (
    <div>
      <Component1 />
    </div>
  );
}

export default App;

2. 组件传参、props 默认值、props 验证

import PropTypes from "prop-types";
function Component1(props) {
  return (
    <div>
      <h1>我是组件1</h1>
      <div>{props.param1 + " " + props.param2.objKey}</div>
    </div>
  );
}

// props 默认值
Component1.defaultProps = {
  param1: "不传显示",
  param2: { objKey: "不传显示" },
};

// props 类型验证
Component1.propTypes = {
  param1: PropTypes.string,
  param2: PropTypes.object,
};

// 方式二:对象拓展符传参
const params = {
  param1: "参数1",
  param2: { objKey: "对象参数" },
};

function App() {
  return (
    <div>
      {/* 方式一:属性传参 */}
      <Component1 param1="参数1" param2={{ objKey: "对象参数" }} />

      {/* 方式二:对象拓展符传参 */}
      <Component1 {...params} />
    </div>
  );
}

export default App;

2. 类组件(有状态组件 可使用 state)

1. 创建并使用组件

组件名称首字母大写

import React from "react";
class Component1 extends React.Component {
  render() {
    return (
      <div>
        <h1>我是组件1</h1>
      </div>
    );
  }
}
function App() {
  return (
    <div>
      <Component1 />
    </div>
  );
}

export default App;

2. 组件传参、props 默认值、props 验证

import PropTypes from "prop-types";
import React from "react";

class Component1 extends React.Component {
  // props 默认值:类组件中第二种写法
  static defaultProps = {
    param1: "类组件 props 默认值 的第二种写法,不传显示",
    param2: { objKey: "类组件 props 默认值 的第二种写法,不传显示" },
  };
  render() {
    return (
      <div>
        <h1>我是组件1</h1>
        <div>{this.props.param1 + " " + this.props.param2.objKey}</div>
      </div>
    );
  }
}
// props 默认值
Component1.defaultProps = {
  param1: "不传显示",
  param2: { objKey: "不传显示" },
};

// props 类型验证
Component1.propTypes = {
  param1: PropTypes.string,
  param2: PropTypes.object,
};

// 方式二:对象拓展符传参
const params = {
  param1: "参数1",
  param2: { objKey: "对象参数" },
};
function App() {
  return (
    <div>
      {/* 方式一:属性传参 */}
      <Component1 param1="参数1" param2={{ objKey: "对象参数" }} />

      {/* 方式二:对象拓展符传参 */}
      <Component1 {...params} />
    </div>
  );
}

export default App;

相关文章

网友评论

    本文标题:react 组件和props传参、props默认值、props验

    本文链接:https://www.haomeiwen.com/subject/hvrtsrtx.html