1、新增知识点

  1. /**
  2. React中的组件: 解决html 标签构建应用的不足。
  3. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
  4. 父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件
  5. 父子组件传值(react 父子组件通信)
  6. 父组件给子组件传值
  7. 1.在调用子组件的时候定义一个属性 <Header msg='首页'></Header>
  8. 2.子组件里面 this.props.msg
  9. 说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。
  10.  
  11. 父组件主动获取子组件的数据
  12. 1、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>
  13. 2、父组件通过this.refs.header 获取整个子组件实例 (dom(组件)加载完成以后获取 )
  14.  
  15. defaultProps:父子组件传值中,如果父组件调用子组件的时候不给子组件传值,则可以在子组件中使用defaultProps定义的默认值
  16. //当获取不到父组件的传值,选择默认值
  17. Header1.defaultProps={
  18. msg:"默认标题"
  19. }
  20. propTypes:验证父组件传值的类型
  21. //检查父组件传过来的数据类型
  22. Header1.propTypes={
  23. num:PropTypes.number
  24. }
  25. 都是定义在子组件中
  26. */

2、代码实例实现之子组件Header.js

  1. import React from 'react';
  2.  
  3. /**
  4. * 父子组件传值
  5. */
  6. class Header extends React.Component{
  7. constructor(props){
  8. super(props);
  9. this.state={
  10. msg:"header 内容"
  11. }
  12. }
  13. getMsg=()=>{
  14. //this.props.news.getData();
  15. // alert(this.props.news.state.msg) //执行父组件数据
  16. this.props.news.getData(); //执行父组件方法并获取数据
  17. }
  18. headerRun=()=>{
  19. alert("这是Header组件run方法")
  20. }
  21. render() {
  22. return(
  23. <div>
  24. <h2>{this.props.title}</h2>
  25. <br/>
  26. {this.state.msg}
  27. <br/>
  28. <button onClick={this.props.run}>点击调用父组件的run方法</button>
  29. <br/>
  30. <button onClick={this.props.news.getData}>获取整个父组件方法</button>
  31.  
  32. <br/>
  33. <button onClick={this.getMsg}>获取整个父组件定义数据</button>
  34. <br/>
  35. <button onClick={this.props.news.getChildData.bind(this,"我是子组件数据")}>子组件传值给父组件</button>
  36.  
  37. </div>
  38. )
  39. }
  40. }
  41.  
  42. export default Header;

3、代码实例实现之父组件Home10.js

  1. import React from 'react';
  2. import Header from './Header';
  3. /**
  4. React中的组件: 解决html 标签构建应用的不足。
  5. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
  6. 父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件
  7. 父子组件传值(react 父子组件通信)
  8. 父组件给子组件传值
  9. 1.在调用子组件的时候定义一个属性 <Header msg='首页'></Header>
  10. 2.子组件里面 this.props.msg
  11. 说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。
  12.  
  13. 父组件主动获取子组件的数据
  14. 1、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>
  15. 2、父组件通过this.refs.header 获取整个子组件实例 (dom(组件)加载完成以后获取 )
  16. */
  17. class Home10 extends React.Component{
  18. constructor(props){
  19. super(props);
  20. this.state={
  21. msg:"我是一个首页组件内容",
  22. title:"首页"
  23. }
  24. }
  25.  
  26. run=()=>{
  27. alert("这是Home10组件的run方法")
  28. }
  29. //获取子组件传过来的数据
  30. getChildData=(result)=>{
  31. alert(result);
  32. }
  33.  
  34. getData=()=>{
  35. alert("获取数据")
  36. }
  37. //父组件主动调用子组件数据和方法
  38. getHeaderMethod=()=>{
  39. alert(this.refs.header.state.msg);
  40. this.refs.header.headerRun();
  41. }
  42. render() {
  43. return(
  44. <div>
  45. <br/>
  46. <Header title={this.state.title} run={this.run} news={this} ref="header"/>
  47. <hr/><br/>
  48. {this.state.msg}
  49. <br/>
  50. <hr/>
  51. <button onClick={this.getHeaderMethod}>获取子组件的数据</button>
  52.  
  53. </div>
  54. )
  55. }
  56. }
  57. export default Home10;

React之父子组件之间传值的更多相关文章

  1. React学习——通过模态框中的表单,学习父子组件之间传值

    import { Button, Modal, Form, Input, Radio } from 'antd'; const CollectionCreateForm = Form.create({ ...

  2. vue父子组件之间传值

    vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种 ...

  3. Vue父子,子父,非父子组件之间传值

    Vue组件基础 纯属随笔记录,具体详细教程,请查阅vue.js网站 子组件给父组件传值: <body> <div id="app"> <my-app& ...

  4. vue简单的父子组件之间传值

     todo-list为例子: 代码: 父传子--------------属性  v-bind 子传父--------------$emit <!DOCTYPE html> <html ...

  5. React 学习(六) ---- 父子组件之间的通信

    当有多个组件需要共享状态的时候,这就需要把状态放到这些组件共有的父组件中,相应地,这些组件就变成了子组件,从而涉及到父子组件之间的通信.父组件通过props 给子组件传递数据,子组件则是通过调用父组件 ...

  6. vue中父子组件之间的传值、非父子组件之间的传值

    在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...

  7. 使用react进行父子组件传值

    在单页面里面,父子组件传值是比较常见的,之前一直用vue开发,今天研究了一下react的父子组件传值,和vue差不多的思路,父组件向子组件传值,父通过初始state,子组件通过this.props进行 ...

  8. react 组件之间传值

    谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...

  9. vue项目中的父子组件之间的传值。

    首先说一下父子组件就是在一个vue文件中引入另一个vue文件,被引入vue文件就是子组件,引入vue文件的vue文件就是父组件.而在父组件中是不能直接调用子组件中的变量值的.下面详细说一下,父子组件之 ...

随机推荐

  1. 三种Shell脚本编程中避免SFTP输入密码的方法

    最近编程中用到sftp上传文件,且需要用crontab预设定时上传事件.而sftp不同于ftp,没有提供选项如 -i 可以将密码直接编码进程序.使用sftp指令,会自动请求用户输入密码. 总结一下可以 ...

  2. ldap搭建

    yum install openldap openldap-servers openldap-clients -y #检查是否安装成功 slapd -VVopenldap的配置文件都在/etc/ope ...

  3. IO模型(epoll)--详解-01

    写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,nginx.redis.skynet和大部分游戏服务器都使用到这一多路复用技术. 本文会从 ...

  4. 批量处理window下^M符号

    #!/bin/ksh #set -x # #去掉文件中的^M 符号 # usage() { echo "Usage : sh ToAscll.sh [Option] [value]" ...

  5. plsql之导入数据乱码

     问题现象: 首先是使用了plsql 8.0版本客户端导入 ANSI as UTF-8 的字符集 格式sql 文件进行数据的导入, 然后检查了所有的系统环境的字符集和plsql 的字符集 都OK 的但 ...

  6. oracle 数据库启动停止小结

    ---登录sqlplus sqlplus  /nolog conn / as sysdba shutdown immediate --启动数据库有两种方式 startup 会自动完成重启数据库的所有步 ...

  7. 【CF1181D】Irrigation

    题目大意:给定 M 个城市,每年会选出一个城市举办比赛,现给出前 N 年城市举办比赛的情况.在接下来的年份中,每年会在举办比赛次数最小的城市举办比赛,如果有很多城市举办次数均为最小值,则在编号最小的城 ...

  8. 动软生成器 model生成模板

    <#@ template language="c#" HostSpecific="True" #> <#@ output extension= ...

  9. Mybatis 中 refid是什么意思

    1.首先定义一个sql标签,一定要定义唯一id 例:<sql  id="Base_Column_List" > name,age </sql> 2.然后通过 ...

  10. 51nod 1120 机器人走方格V3

    1120 机器人走方格 V3  基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只 ...