2019独角兽企业重金招聘Python工程师标准>>>

新闻组件,首页组件是父组件

头部组件,底部组件是子组件

构造函数中固定写法    super(props); //固定写法

总结

React中的组件: 解决html 标签构建应用的不足。
使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件
父子组件传值(react 父子组件通信):父组件给子组件传值 1.在调用子组件的时候定义一个属性  <Header msg='首页'></Header>2.子组件里面 this.props.msg          说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。父组件主动获取子组件的数据1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )

一.父组件给子组件传值。子组件获取父组件的数据

父组件引用子组件的时候,声明属性(通过构造函数)

<Header title={this.state.title} />

子组件直接调用

<h2>{this.props.title}</h2>

二.父组件给子组件传方法。子组件获取父组件的方法

父组件中有一个run方法,引用子组件的时候,将run方法传递给子组件(通过构造函数传递参数为props)

<Header title={this.state.title}  run={this.run}  />

子组件调用父组件中run方法

 <button onClick={this.props.run}>调用news父组件的run方法</button>

三.获取整个父组件

父组件中引用子组件时,传递自己到子组件(通过构造函数传递)

<Header title={this.state.title} news={this} />

子组件中方法直接调用父组件对象news(this.props.news)

    getNews=()=>{// alert(this.props.news.state.msg);this.props.news.getData();}

子组件调用

<button onClick={this.getNews}>获取整个news组件实例</button>

四.子组件给父组件传值

父组件获取子组件的数据

    //获取子组件里面穿过来的数据getChildData=(result)=>{alert(result);this.setState({msg:result})}

子组件调用方法

<button onClick={this.props.news.getChildData.bind(this,'我是子组件的数据')}>子组件给父组件传值</button>

五.父组件获取子组件对象

父组件中

 <button onClick={this.getFooter}>获取整个底部组件</button>

父组件的方法

//父组件主动调用子组件的数据和方法getFooter=()=>{/*父组件主动获取子组件的数据1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )*///alert(this.refs.footer.state.msg); //获取子组件的数据this.refs.footer.run();}

父组件引用子组件的时候

<Footer  ref='footer'/>

父组件中获取子组件的对象

    //父组件主动调用子组件的数据和方法getFooter=()=>{/*父组件主动获取子组件的数据1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )*///alert(this.refs.footer.state.msg); //获取子组件的数据this.refs.footer.run();//调用子组件中的run方法}

完整代码

首页组件

import React, { Component } from 'react';/*React中的组件: 解决html 标签构建应用的不足。         使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件父子组件传值(react 父子组件通信):父组件给子组件传值 1.在调用子组件的时候定义一个属性  <Header msg='首页'></Header>2.子组件里面 this.props.msg          说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。父组件主动获取子组件的数据1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )*/import Header from './Header';class Home extends Component {constructor(props){super(props); //固定写法       this.state={msg:'我是一个首页组件',title:'首页组件'}}render() {return (<div>        <Header title={this.state.title} /><br /><hr /><br />这是首页组件的内容</div>);}}export default Home;

头部组件

import React, { Component } from 'react';class Header extends Component{constructor(props){super(props);   //国定写法this.state={msg:'这是一个头部组件'}}getNews=()=>{// alert(this.props.news.state.msg);this.props.news.getData();}render(){return(<div><h2>{this.props.title}</h2><button onClick={this.props.run}>调用news父组件的run方法</button><br />  <br /><button onClick={this.props.news.getData}>获取news组件的getData方法</button><br />  <br /><button onClick={this.getNews}>获取整个news组件实例</button><br />  <br /><button onClick={this.props.news.getChildData.bind(this,'我是子组件的数据')}>子组件给父组件传值</button></div>)}
}export default Header;

新闻页面


/*React中的组件: 解决html 标签构建应用的不足。         使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件父子组件传值(react 父子组件通信):父组件给子组件传值 1.在调用子组件的时候定义一个属性  <Header msg='首页'></Header>2.子组件里面 this.props.msg          说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。父组件主动获取子组件的数据1、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、父组件通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )*/import React, { Component } from 'react';import Header from './Header';import Footer from './Footer';class News extends Component {constructor(props){super(props);        this.state={          title:'新闻组件',msg:'我是新闻组件的msg'}}run=()=>{alert('我是父组件的run方法')}//获取子组件里面穿过来的数据getChildData=(result)=>{alert(result);this.setState({msg:result})}getData=()=>{alert(this.state.title+'getData');}//父组件主动调用子组件的数据和方法getFooter=()=>{/*父组件主动获取子组件的数据1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )*///alert(this.refs.footer.state.msg); //获取子组件的数据this.refs.footer.run();}render() {return (<div>        <Header title={this.state.title}  run={this.run}  news={this} /><br /><hr /><br />这是新闻组件的内容---{this.state.msg}<br /><button onClick={this.getFooter}>获取整个底部组件</button><br /><hr /><br /><Footer  ref='footer'/></div>);}}export default News;

底部组件

import React, { Component } from 'react';class Footer extends Component{constructor(props){super(props);   //国定写法this.state={msg:'我是一个底部组件'}}run=()=>{alert('我是底部组件的run方法')}render(){return(<div><h2>我是一个底部组件</h2></div>)}
}export default Footer;

转载于:https://my.oschina.net/glorylion/blog/3000964

10.React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法...相关推荐

  1. vue 子级拿值_vue 父组件通过$refs获取子组件的值和方法详解

    前言 在vue项目中组件之间的通讯是很常见的问题,同时也是很重要的问题,我们大致可以将其分为三种情况: 父传子:在父组件中绑定值,在子组件中用props接收 子传父:在父组件中监听一个事件,在子组件中 ...

  2. vue3 中通过$refs 获取子组件数据

    vue2 中获取子组件中的数据方法,可以使用 this.$refs ,但此方式在vue3中不适用了. 问题: 点击删除行的同时修改表格中数据选中状态,需要通过 ref 操作表格中的数据. 具体代码如下 ...

  3. Vue 组件封装 | 给汉字注音(带声调),内含汉字转拼音(带声调/不带声调),获取汉字首字母的方法

    目录 s-pinyin 组件封装 相关参数 <s-pinyin content="我们都有一个家,名字叫中国."></s-pinyin> s-pinyin ...

  4. c++中获取蓝图组件_Vue组件通信方式居然有这么多?你了解几种

    作者:梨香 链接:https://juejin.im/post/6887709516616433677 vue组件通信的方式,这是在面试中一个非常高频的问题,我刚开始找实习便经常遇到这个问题,当时只知 ...

  5. Vue3(撩课学院)笔记02-创建组件,全局组件,局部组件,父子组件,组件标签化,组件的data数据共享,组件间通讯,props,父传子$ref,子传父$parent

    1.创建一个组件 首先要创建一个根组件进行挂载 再创建一个子组件,完成子组件的逻辑 子组件主要使用template模板来完成布局和逻辑 把子组件通过根组件.component的方法挂载到根组件上 &l ...

  6. Vue.js中$refs{}获取DOM元素

    如果我们想获取DOM元素,一般使用js中的document.querySelector来获取这个dom节点,然后在获取元素的值,现在Vue提供给我们一种更便捷的方式来获取DOM元素-----$refs ...

  7. React(一)父子组件之间的通信

    无论是React,还是Vue,父子组件之间的通信都是组件式开发至关重要的一部分.备注一下基础要点. 1.父组件向子组件传值 父组件向子组件传值是在调用子组件的时候通过参数传递给子组件 .父组件代码 i ...

  8. react基础入门,类组件和函数组件,state,props,refs

    React入门 目录 React入门 React入门 Vue跟React的异同点 相同点 不同点 Vue小建议 1. 不需要响应式的数据应该怎么处理? 2. Key 3. 数据结构 React 教程 ...

  9. client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法

    [本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址] 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄) ...

  10. react如何卸载组件_18道 React 面试必考题含解答面试高频

    前言 React 前端框架的受欢迎程度丝毫木有减弱的迹象,全国许多城市对开发人员仍供不应求.对于经验不足的开发人员(或那些已经失业了一段时间的开发人员),在面试阶段展示您的知识可能会令人生畏. 在本文 ...

最新文章

  1. oracle linux telnet,linux如何开启telnet服务
  2. 如何一次关闭所有打开的标签?
  3. 【Python】KNN简单的判别预测
  4. LeetCode 88. 合并两个有序数组(Merge Sorted Array)
  5. 【学术相关】建议收藏,到底哪些行为是学术不端?
  6. excel进度条与百分比不符_用Python操作Excel数据
  7. 同学,你有一份来自支付宝AI学姐的面试锦囊待查收
  8. mysql slave 线程 简书_【MySQL】你真的读懂了slave status吗?
  9. YBTOJ:方程的解(组合数学)(插板法)
  10. hash算法_hash一致性算法
  11. 缩放图片,解决bitmap 内存溢出out of memory的问题
  12. Java9 新特性 详解
  13. java pdf 加水印
  14. win10显示rpc服务器不可用,多种方法解决Win10专业版RPC服务器不可用的方法
  15. 基于 Verilog 的经典数字电路设计(7)JK 触发器与 T 触发器
  16. 为Android购买多个改装微信,安卓版微信带来超级重磅更新 微信终于开放账号ID修改功能喽(就是限制略多)...
  17. 海康IPC+ffmpeg+nginx+ckplayer实现网页实时预览监控视频
  18. 使用NuSMV解决过河问题
  19. python datetime计算时间差_python计算时间差的方法
  20. 如何在HTML里画一个三角形

热门文章

  1. 并查集(许多东西的基本哦)
  2. RK3288 查看时钟树
  3. 常用设计模式之单例模式
  4. JMeter设置集合点
  5. discuz是如何判断手机端访问的
  6. 虚拟机 安装 linux 分辨率 调整
  7. Java 常用修饰符总结
  8. ACM-百度之星资格赛之Energy Conversion——hdu4823
  9. 【JDK和Open JDK】平常使用的JDK和Open JDK有什么区别(转)
  10. Java通过BCrypt加密