React之父子组件之间传值
1、新增知识点
/**
React中的组件: 解决html 标签构建应用的不足。
使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件
父子组件传值(react 父子组件通信)
父组件给子组件传值
1.在调用子组件的时候定义一个属性 <Header msg='首页'></Header>
2.子组件里面 this.props.msg
说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。 父组件主动获取子组件的数据
1、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>
2、父组件通过this.refs.header 获取整个子组件实例 (dom(组件)加载完成以后获取 ) defaultProps:父子组件传值中,如果父组件调用子组件的时候不给子组件传值,则可以在子组件中使用defaultProps定义的默认值
//当获取不到父组件的传值,选择默认值
Header1.defaultProps={
msg:"默认标题"
}
propTypes:验证父组件传值的类型
//检查父组件传过来的数据类型
Header1.propTypes={
num:PropTypes.number
}
都是定义在子组件中
*/
2、代码实例实现之子组件Header.js
import React from 'react'; /**
* 父子组件传值
*/
class Header extends React.Component{
constructor(props){
super(props);
this.state={
msg:"header 内容"
}
}
getMsg=()=>{
//this.props.news.getData();
// alert(this.props.news.state.msg) //执行父组件数据
this.props.news.getData(); //执行父组件方法并获取数据
}
headerRun=()=>{
alert("这是Header组件run方法")
}
render() {
return(
<div>
<h2>{this.props.title}</h2>
<br/>
{this.state.msg}
<br/>
<button onClick={this.props.run}>点击调用父组件的run方法</button>
<br/>
<button onClick={this.props.news.getData}>获取整个父组件方法</button> <br/>
<button onClick={this.getMsg}>获取整个父组件定义数据</button>
<br/>
<button onClick={this.props.news.getChildData.bind(this,"我是子组件数据")}>子组件传值给父组件</button> </div>
)
}
} export default Header;
3、代码实例实现之父组件Home10.js
import React from 'react';
import Header from './Header';
/**
React中的组件: 解决html 标签构建应用的不足。
使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
父子组件:组件的相互调用中,我们把调用者称为父组件,被调用者称为子组件
父子组件传值(react 父子组件通信)
父组件给子组件传值
1.在调用子组件的时候定义一个属性 <Header msg='首页'></Header>
2.子组件里面 this.props.msg
说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。 父组件主动获取子组件的数据
1、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>
2、父组件通过this.refs.header 获取整个子组件实例 (dom(组件)加载完成以后获取 )
*/
class Home10 extends React.Component{
constructor(props){
super(props);
this.state={
msg:"我是一个首页组件内容",
title:"首页"
}
} run=()=>{
alert("这是Home10组件的run方法")
}
//获取子组件传过来的数据
getChildData=(result)=>{
alert(result);
} getData=()=>{
alert("获取数据")
}
//父组件主动调用子组件数据和方法
getHeaderMethod=()=>{
alert(this.refs.header.state.msg);
this.refs.header.headerRun();
}
render() {
return(
<div>
<br/>
<Header title={this.state.title} run={this.run} news={this} ref="header"/>
<hr/><br/>
{this.state.msg}
<br/>
<hr/>
<button onClick={this.getHeaderMethod}>获取子组件的数据</button> </div>
)
}
}
export default Home10;
React之父子组件之间传值的更多相关文章
- React学习——通过模态框中的表单,学习父子组件之间传值
import { Button, Modal, Form, Input, Radio } from 'antd'; const CollectionCreateForm = Form.create({ ...
- vue父子组件之间传值
vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种 ...
- Vue父子,子父,非父子组件之间传值
Vue组件基础 纯属随笔记录,具体详细教程,请查阅vue.js网站 子组件给父组件传值: <body> <div id="app"> <my-app& ...
- vue简单的父子组件之间传值
todo-list为例子: 代码: 父传子--------------属性 v-bind 子传父--------------$emit <!DOCTYPE html> <html ...
- React 学习(六) ---- 父子组件之间的通信
当有多个组件需要共享状态的时候,这就需要把状态放到这些组件共有的父组件中,相应地,这些组件就变成了子组件,从而涉及到父子组件之间的通信.父组件通过props 给子组件传递数据,子组件则是通过调用父组件 ...
- vue中父子组件之间的传值、非父子组件之间的传值
在Vue实例中每个组件之间都是相互独立的,都有自己的作用域,所以组件之间是不能直接获取数据.在项目开发中一个组件可能需要获取另一个组件的值,我们可以通过其他方法间接的获取.所以,获取的方法有以下几种: ...
- 使用react进行父子组件传值
在单页面里面,父子组件传值是比较常见的,之前一直用vue开发,今天研究了一下react的父子组件传值,和vue差不多的思路,父组件向子组件传值,父通过初始state,子组件通过this.props进行 ...
- react 组件之间传值
谈及React时,就会想到一个很重要的思想,就是组件化思想.它将可以重用的部分进行组件化开发,形成一个个相对独立的组件,那么组件化后,你也会提出些疑问,组件与组件之间,将怎样进行信息的传递呢?下面来介 ...
- vue项目中的父子组件之间的传值。
首先说一下父子组件就是在一个vue文件中引入另一个vue文件,被引入vue文件就是子组件,引入vue文件的vue文件就是父组件.而在父组件中是不能直接调用子组件中的变量值的.下面详细说一下,父子组件之 ...
随机推荐
- idea使用问题总结
一.创建Spring 的配置文件需要加入一个pom.xml 的依赖 <dependency> <groupId>org.springframework</groupId& ...
- 06-spring框架—— Spring 与Web
在 Web 项目中使用 Spring 框架,首先要解决在 web 层(这里指 Servlet)中获取到 Spring容器的问题.只要在 web 层获取到了 Spring 容器,便可从容器中获取到 Se ...
- SSH中直接运行php文件
cd /home/afish/domains/afish.cnblogs.com/public_htmlphp locoy_im_folder.php php locoy_im.php
- WIndows cmd command 指令总结
1. 文件操作 显示当前文件夹内所有文件 dir dir /s 仅显示特定后缀的文件 # 查找当前目录下所有mp3文件dir /s *.mp3
- lsusb查看usb设备
root@ubuntu:/home/lyd/work/code/cyusb# lsusb Bus 001 Device 009: ID 04b4:00f1 Cypress Semiconductor ...
- ES数据架构与关系数据库Mysql
ES数据架构的主要概念(与关系数据库Mysql对比) MySQL ElasticSearch Database Index Table Type Row Document Column Field S ...
- 通过实现接口runnable实现多线程
实现Runnable接口实现多线程的步骤(1)编写类实现Runnable接口(2)实现run(方法(3)通过Thread类的start(方法启动线程 静态代理模式Thread >代理 角色MyR ...
- 生成json格式
html页面 <input type="button" value="重新生成JSON" class="button1" id=&qu ...
- 手动解析网易云音乐MP3真实地址
火狐打开音乐播放页面 然后按F12 点击网络选项卡 点击音乐播放按钮 然后过滤输入“url” 选中筛选出来的结果 点击右边的相应选项卡 下面的url里面就是真实的预约MP3地址
- Codeforces Round #395 Div.1 C pacifist【JZOJ5449】Pacifist
题目 papyrus 喜欢谜题... 来解一道如何? 在你面前有一个被加密了的数组,其原数组是一个等差序列,你面前的则是将原数组中的所有数字都对m 取模再打乱后而得到的新数组 papyrus 给你出的 ...