一些概念

  • 组件:视图的片段、内部管理数据集合(state)外部传入配置结合(props)
  • 包含: 1. 视图标记(React的JSX、Vue的template)需要经过转换而成为真实的DOM
    1. 事件
    1. 数据
    1. 逻辑(存储storage、数据结构化处理)
    1. 外部的配置

属性props和数据/状态state的区别

  1. state → 数据池 组件内部的管理数据的容器 组件内部可读写
  2. props → 属性池 外部调用组件时传入的属性集合 组件内容只读不可写

组件渲染过程

  1. React主动调用Mytitle自定义组件
  2. 将属性集合转换对象 props → { title: 'xxx'}
  3. 将对象作为props传入组件
  4. 替换JSX中的props或者state中的变量
  5. ReactDOM将最终的React元素通过一系列操作转换成真实DOM进行渲染

组件调用规范

  1. 视图标记:HTML标签 <h1></h1>
  2. 大驼峰写法作为一个React元素 <Mytitle />组件 → JSX → React元素
  3. 组件转换React元素 React.createElement参考下面代码

使用props(类组件)

class Mytitle extends React.Component {constructor(props) {super(props)}state = {title: this.props.title}changeTitle() {this.setState({title: 'new title'})}render() {return (<div><h1>{this.state.title}</h1><button onClick={this.changeTitle.bind(this)}>修改</button></div>)}
}
ReactDOM.render(<Mytitle title="init title" />,document.getElementById('app')
)

使用hooks(函数组件,不写class了)

  • 函数组件一定要是一个纯函数(入参不可修改,能保证绝对的复用性)
  • 注意onClick绑定的不是函数执行setTitle('new title'),而应该是一个匿名函数
  • 或者用bind返回一个函数
function Mytitle(props) {const [title, setTitle] = React.useState(props.title)return (<div><h1>{title}</h1><button onClick={() => setTitle('new title')}>修改</button>// or// <button onClick={setTitle.bind(this, 'new title')}>修改</button></div>)
}
ReactDOM.render(<Mytitle title="init title" />,document.getElementById('app')
)
// or不写jsx
// ReactDOM.render(
//     React.createElement(Mytitle, {//         title: 'init title'
//     }),
//     document.getElementById('app')
// )

使用展开运算符

// 省略
state = {title: 'title',author: 'author'
}
render(){return (<Title {...this.state }/>)
}
// 相当于 <Title title="this.state.title" author="this.state.author" />

04 组件与Props相关推荐

  1. 组件间数据交互||父组件向子组件传值-基本使用|| 父组件向子组件传值-props属性名规则

    组件间数据交互 父组件向子组件传值 1. 组件内部通过props接收传递过来的值 2. 父组件通过属性将值传递给子组件 父组件向子组件传值-基本使用 <!DOCTYPE html> < ...

  2. 【视频】vue组件之props属性

    P9vue组件之props属性 https://www.bilibili.com/video/av91679349?p=9

  3. React组件通信--props

    React组件通信 1.props接收数据 //index.js import App from "./App";ReactDOM.render(<App name='传递数 ...

  4. [react] 在React中组件的props改变时更新组件的有哪些方法?

    [react] 在React中组件的props改变时更新组件的有哪些方法? 新版用 getDerivedstatefromProps(nextProps){ 业务逻辑} 个人简介 我是歌谣,欢迎和大家 ...

  5. React之函数式组件使用props

    <!DOCTYPE html> <html> <head> <meat charset="UTF-8"> <title> ...

  6. React简介、虚拟DOM、Diff算法、创建React项目、JSX语法、组件、组件声明方式、组件传值props和state、组件的生命周期

    React简介: 前面只是简单介绍移动APP开发,后面还会继续深入介绍移动app开发:其中想要用ReactNative开发出更出色的应用,那么就得学好React,下面将介绍React: React 是 ...

  7. React组件进阶--组件通讯介绍,组件的 props特点,组件通讯的三种方式子到父,父到子,兄弟到兄弟组件,Context,回顾练习

    1.组件通讯介绍 组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据(state). 在组件化过程中,我们将一个完整的功能 拆分成多个组件,以更好的完成整个应用的功能. 而在这个过程中,多个组 ...

  8. Vue组件选项props

    前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...

  9. VUE之组件(Props特性深析)

    Prop命名风格 [前言] 创建一个博文组件,如果你不能向这个组件传递某一篇博文的标题或内容之类的我们想展示的数据的话,它是没有办法使用的,这也正是 prop 的由来. Prop 是你可以在组件上注册 ...

最新文章

  1. 深度学习进阶:多分类与TensorFlow
  2. 操作系统机制学习总结
  3. Appium定位方式总结
  4. boost::container模块实现显式实例表的测试程序
  5. shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现
  6. java确认rabbitmq_RabbitMQ 消息确认机制
  7. java gui 连接mysql数据库
  8. 知识即战斗力!数学家华罗庚投入特殊抗战,一夜译破日军密码
  9. 数字图像处理--图像二阶导数的本质
  10. 判断response.data是否为空
  11. 2022年考研计算机-数据库原理8-11章
  12. linux根目录9个g,linux根目录下5个主要的目录,及目录的功能
  13. 利用WCF与Android实现图片上传并传参
  14. 五分钟教你快速制作 macOS Mojave U盘启动盘
  15. Photoshop CS6安装教程
  16. 推荐几个值得关注的微信公众号
  17. 二维码:STM32F103 + LCD屏制作二维码
  18. Neno和OpenMP的性能提升验证
  19. 游戏音效的作用以及未来发展
  20. Mac OS 解决 remote: Permission to xxx/xxx.git denied to xxx. 的两种方案

热门文章

  1. wxpython按钮形状如何修改_Python图形化界面入门教程 - 使用wxPython自定义表
  2. php小于neq qe,PHP模板判断语句eq相等 ne、neq不相等, gt大于, lt小于
  3. java项目经验怎么写_模具工简历项目经验怎么写
  4. Unity内实现Android APK版本更新
  5. logging模块和包
  6. elastic学习笔记
  7. SpringMVC+Mybatis学习
  8. jqGrid格式化日期
  9. 学习关于时间在sql里面的对比,用if语句(这个有点特别)
  10. 巧用VC工程下的rc文件