1、创建组件的方法

    1.1、函数式无状态组件

   1.1.1、语法

1 function myComponent(props) {
2 return
3 <div>Hello {props.name}</div>
4 }

   1.1.2、特点

      ● 它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到state状态的操作。

      ● 组件不能访问this对象

      ● 不能访问生命周期方法

   1.1.3、建议

      如果可能,尽量使用无状态组件

2、(组件的)状态(state)和属性(props)之间有何不同

       2.1、State 是一种数据结构,用于组件挂载时所需数据的默认值。State 可能会随着时间的推移而发生突变,但多数时候是作为用户事件行为的结果。

 2.2、Props(properties 的简写)则是组件的配置。props 由父组件传递给子组件,并且就子组件而言,props 是不可变的(immutable)。组件不能改变自身 的 props,但是可以把其子组件的 props 放在一起(统一管理)。Props 也不仅仅是数据–回调函数也可以通过 props 传递。

3、父子组件传值

   3.1、父组件Father.js

 import React from 'react';
import Son from './Son'
//父组件
class Father extends React.Component{
constructor(){super();
this.state={
message:''
}
}
//声明一个函数,用户接收子组件的传值
getSonMess(msg){
consloe.log('子组件传过来的值 '+msg)
}
render(){
return(
<React.Fragment>
<Son mess='hello Son' sonMess={this.getSonMess}>
</React.Fragment>
);
}
}
export default Father;

        3.2、子组件Son.js

 import React from 'react';

 //子组件
class Son extends React.Component{ render(){
return (
<React.Fragment> {this.props.mess},{this.props.sonMess()} </React.Fragment>
);
} } export default Son;

4、兄弟组件传值

  4.1、组件Father.js

 import React from 'react';
import Son from './Son';
import Son2 from './Son2';
//父组件
class Father extends React.Component{ constructor(){
super();
this.state = {
message:''
}
} //用于接收Son.js组件的数据函数
sonDatas(msg){
this.setState({
message:msg
});
console.log("在Father.js中展示Son.js生成的数据:"+msg);
} render(){
return (
<React.Fragment> <h1>在Father组件中显示:</h1>
<Son sondata={this.sonDatas.bind(this)}></Son>
<Son2 mess={this.state.message}></Son2>
</React.Fragment>
);
} } export default Father;

     4.2、第一个“兄弟”, 组件 Son.js

 import React from 'react';

 //子组件
class Son extends React.Component{ //按钮点击事件函数
sonClick(){
this.props.sondata('这是从Son.js中生成的数据。。。');
} render(){
return (
<React.Fragment> <button onClick={this.sonClick.bind(this)}>Son组件中的按钮获取数据</button> </React.Fragment>
);
} } export default Son;

4.3、第二个“兄弟”,组件Son2.js

 import React from 'react';

 //子组件
class Son2 extends React.Component{ render(){
return (
<React.Fragment> <h1>
在Son2.js中展示Son.js中生成的数据,这个是Father.js传过来的,数据是:
{this.props.mess}
</h1> </React.Fragment>
);
} } export default Son2;

React组件介绍与使用(父传子、子传父、兄弟传)的更多相关文章

  1. 1.3 React 组件

    1.3.1 React 组件介绍 在 React 中组件是第一元素,是 React 的基础,一个 React 应用就是基于 React 组件的组合而成.前面的 JSX 练习过后,大家应该对 React ...

  2. react组件父传子

    react组件父传子,子组件使用父组件的数据,用props import React, { Component } from 'react'; class App extends Component ...

  3. react第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参)

    第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参) #课程目标 1.梳理react组件之间的关系 2.掌握父子传值的方法 3.掌握子父传值的方法 ...

  4. vue 组件之间相互传值 父传子 子传父

    1.父传子 把要传入的值放到父标签里  子组件使用props接收 父写法 子写法 2.子传父 子组件: childrenOnclick() { // 发布自定义事件 this.$emit(" ...

  5. Vue父子组件传值 | 父传子 | 子传父

    父传子 父容器 <template> <div> <zdy :module='test'></zdy> </div> </templa ...

  6. vue 父组件给子组件传值 Vue父组件给子组件传方法 Vue父组件把整个实例传给子组件

    Home.vue <template> <!-- 所有的内容要被根节点包含起来 --> <div id="home"> <v-header ...

  7. vue的组件通讯 父传子 -- 子传父-- 兄弟组件的传值 vue的组件传值

    首先文字简单撸一下 父子传子   -------首先在父组件上绑定一个属性,在子组件里用props接收,可以是数组或者是对象 子传父   ------在父组件升上自定义一个方法,在子组件里通过this ...

  8. Vue 父组件方法和参数传给子组件的方法

    <template> <div class="content-item"> <!-- openWnd是父组件自身的方法,openDutyWnd是子组件 ...

  9. React 组件间通信介绍

    React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍:   父组件向子 ...

随机推荐

  1. sql server 中取前n行字段最大值问题

    例子 取前三行最大ID ID from Students)AS A 这样写得到的却是整个表的最大ID值,并不是我们需要的值 要在句中加入order by ID ID from Students ord ...

  2. localdb启动

    前提:vs自带localdb,不用另外装.其次,vs里的的“sql server 对象资源管理器”(在视图里)可以常规管理它.相比之下,SSMS更专业(推荐),按情况选用. 正文: 安装完毕后…… C ...

  3. wsl中的git问题

    当使用wsl打开Windows下的仓库时可能会出现所有文件都被标记为modified,这时一般有两种情况. 文件权限问题 由于wsl申请对文件的读写权限导致文件的权限发生改变.这时只需修改git的设置 ...

  4. Delphi编译/链接过程

    下面展示了Delphi是怎样编译源文件,并且把它们链接起来,最终形成可执行文件. 当Delphi编译项目(Project)时,将编译项目源文件.窗体单元和其他相关单元,在这个过程中将会发生好几件事情: ...

  5. ASP.NET Core MVC上传文件

    使用模型绑定上传小文件 HTML代码: <form method="post" enctype="multipart/form-data" asp-con ...

  6. ECharts学习指南

    1.了解ECharts ECharts简单说就是互联网开发程序过程中,后台数据库用以实现数据到图形的映射的一个插件. 具体来说一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在PC和 ...

  7. 面试官:优化代码中大量的if/else,你有什么方案?

    一个快速迭代的项目,时间久了之后,代码中可能会充斥着大量的if/else,嵌套6.7层,一个函数几百行,简!直!看!死!人! 这个无限循环嵌套,只是总循环的一部分...我已经绕晕在黄桷湾立交 仔细数了 ...

  8. Mysql数据库 深度知识点

    停止命令:net stop mysql 启动命令:net start mysql   mysql登录命令 mysql -h ip -P 端口 -u 用户名 -p   mysql --version 或 ...

  9. scrapy设置logger日志

    1.在settings中设置log级别,在settings.py中添加一行: LOG_LEVEL = 'WARNING' Scrapy提供5层logging级别: CRITICAL - 严重错误 ER ...

  10. docker gitlab-runner的安装

    参考: Run GitLab Runner in a container 前面介绍了gitlab-ce的安装,下面是gitlab-runner的安装,同样还是安装docker版本. 1.下载 dock ...