React Props

这篇具有很好参考价值的文章主要介绍了React Props。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stateprops 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。

所以,有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。

props 使用

Demo.js

import React from 'react'

function Demo (props) {
  return (
    <div>
      <h1>name: {props.name}</h1>
      <h1>message: {props.message}</h1>
      <h1>phone: {props.phone}</h1>
    </div>
  )
}

export default Demo

App.js 中引入组件:

import './assets/css/App.css';
import Demo from './components/Demo'

function App () {
  return (
    <div className="App">
      <Demo name='index' message='哈哈哈' phone="12312" />
    </div>
  );
}

export default App;

页面效果:
React Props

默认 Props

可以通过组件类的 defaultProps 属性为 props 设置默认值:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React demo</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>

<div id="example"></div>
<script type="text/babel">
class HelloMessage extends React.Component {
  render() {
    return (
      <div>
	  <h1>name: {this.props.name}</h1>
      <h1>phone: {this.props.phone}</h1>
      <h1>message: {this.props.message}</h1>
	  </div>
    );
  }
}

HelloMessage.defaultProps = {
  message: '我是props.message的默认值!'
};

const element = <HelloMessage name='index' phone='12312'/>;

ReactDOM.render(
  element,
  document.getElementById('example')
);
</script>

</body>
</html>

页面效果:
React Props

组合使用 State 和 Props

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React Demo</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>

<div id="example"></div>
<script type="text/babel">

class Demo extends React.Component {
  constructor() {
      super();

      this.state = {
        name: "xiaoming",
        msg: "https://www.baidu.com"
      }
    }
  render() {
    return (
      <div>
        <Name name={this.state.name} />
        <Link site={this.state.msg} />
      </div>
    );
  }
}



class Name extends React.Component {
  render() {
    return (
      <h1>{this.props.name}</h1>
    );
  }
}
 
class Link extends React.Component {
  render() {
    return (
      <a href={this.props.site}>
        {this.props.site}
      </a>
    );
  }
}
 
ReactDOM.render(
  <Demo />,
  document.getElementById('example')
);
</script>

</body>
</html>

页面效果:
React Props
上面实例,在父组件中设置 state, 并通过在子组件上使用 props 将其传递到子组件上。在 render 函数中, 设置 namesite 来获取父组件传递过来的数据。

Props 验证

Props 验证使用 propTypes,可以保证应用组件被正确使用,React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效。当向 props 传入无效数据时,JavaScript 控制台会抛出警告。

类型验证

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React demo</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/prop-types/15.6.1/prop-types.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>

<div id="example"></div>
<script type="text/babel">
var title = "this is a title";
class Demo extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.title}</h1>
    );
  }
}

Demo.propTypes = {
  title: PropTypes.string
};
ReactDOM.render(
    <Demo title={title} />,
    document.getElementById('example')
);
</script>

</body>
</html>

以上实例创建一个 Demo 组件,属性 title 是必须的且是字符串,非字符串类型会自动转换为字符串。

页面效果:
React Props

当修改 title 的值为其他类型时,如下:

var title = true

运行代码会抛出错误:
React Props

是否为空验证

任意类型加上 isRequired 来使 prop 不可空。

<Demo title={title} /> 修改为 <Demo />

然后,修改校验 Demo.propTypes = { title: PropTypes.string } 为如下:

Demo.propTypes = {
  title: PropTypes.string.isRequired
};

运行代码会抛出错误:
React Props文章来源地址https://www.toymoban.com/news/detail-419528.html

到了这里,关于React Props的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React:props说明

    props是只读对象(readonly) 根据单项数据流的要求,子组件只能读取props中的数据,不能进行修改 props可以传递任意数据 数字、字符串、布尔值、数组、对象、函数、JSX FileUpdate 画面接收props

    2024年02月10日
    浏览(39)
  • React Props

    state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。 所以,有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。 Demo.js : 在 App.js 中引入组件: 页面效果: 可以通过组件类的 defaultProps 属性为 props 设置默认值

    2023年04月20日
    浏览(71)
  • React三属性之:props

    作用 将父组件的参数传递给子组件 父组件 子组件 效果如下

    2024年02月09日
    浏览(34)
  • React——props children (插槽平替)

    React当中不存在v-slot插槽这种概念,而当我们又需要实现这个种功能时,该怎么办呢? 我们可以通过props children属性去实现。 props children属性 : children属性:表示该组件的子节点,自动放在props的children属性里 它值可以是任意类型(文本、React元素、数组、组件、对象、函数)

    2024年03月21日
    浏览(42)
  • React通过props的children实现插槽功能

    可能会比较遗憾的说 React中并没有vue中的 slot 插槽概念 不过 可以通过props.children 实现类似功能 我们先创建一个React项目 在src下创建目录components 在下面创建一个dom.jsx组件 参考代码如下 这里 大家可以将this.props.children 理解为我们vue中的slot父组件插入的内容就会放在这个位置

    2024年02月11日
    浏览(49)
  • 详解React:Props构建可复用UI的基石

    React是一种流行的JavaScript库,用于构建用户界面。它的组件化架构使得开发人员能够轻松地构建可复用的UI元素,从而提高开发效率。在本文中,我们将探讨React中的组件和Props的重要性,以及如何利用它们来构建可复用的UI。 在现代Web开发中,构建交互式和可复用的用户界面

    2024年02月05日
    浏览(50)
  • 在 React 中,props(属性)用于在组件之间传递数据

    在 React 中,props(属性)用于在组件之间传递数据。它是父组件向子组件传递信息的一种方式,通过 props,父组件可以向子组件传递数据、回调函数、配置项等。 注意: props 是只读的,它的值由父组件传递给子组件时确定,并且在子组件中不能直接修改。如果子组件需要改

    2024年02月15日
    浏览(52)
  • 组件与Props:React中构建可复用UI的基石

    目录 组件:构建现代UI的基本单位 Props:组件之间的数据传递 Props的灵活性:构建可配置的组件 组件间的通信:通过回调函数传递数据 总结: 组件:构建现代UI的基本单位 组件是前端开发中的关键概念之一。它允许我们将UI拆分成独立、可复用的部分,使得代码更易于理解

    2024年02月06日
    浏览(41)
  • React styled-components(二)—— props、attrs属性

    styled-components 可以 props 穿透,把属性穿透到元素中。 通常,用 css 的 input 组件实现一个密码输入框写法如下: 接下来用 styled-components 来实现,首先生成一个 input 组件,新建 Demo.js 文件: App.js 中引入 Demo.js 文件: 页面效果: 接下来,给生成的 ContextP 组件添加 type=password

    2023年04月18日
    浏览(41)
  • React组件进阶之children属性,props校验与默认值以及静态属性static

    children 属性:表示该组件的子节点,只要组件有子节点,props就有该属性 children 属性与普通的 props 一样,值可以是任意值(文本、React元素、组件,甚至是函数) 核心代码 官网说明地址 对于组件来说,props 是外来的,无法保证组件使用者传入什么格式的数据 如果传入的数据

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包