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文件就是父组件.而在父组件中是不能直接调用子组件中的变量值的.下面详细说一下,父子组件之 ...
随机推荐
- 三种Shell脚本编程中避免SFTP输入密码的方法
最近编程中用到sftp上传文件,且需要用crontab预设定时上传事件.而sftp不同于ftp,没有提供选项如 -i 可以将密码直接编码进程序.使用sftp指令,会自动请求用户输入密码. 总结一下可以 ...
- ldap搭建
yum install openldap openldap-servers openldap-clients -y #检查是否安装成功 slapd -VVopenldap的配置文件都在/etc/ope ...
- IO模型(epoll)--详解-01
写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,nginx.redis.skynet和大部分游戏服务器都使用到这一多路复用技术. 本文会从 ...
- 批量处理window下^M符号
#!/bin/ksh #set -x # #去掉文件中的^M 符号 # usage() { echo "Usage : sh ToAscll.sh [Option] [value]" ...
- plsql之导入数据乱码
问题现象: 首先是使用了plsql 8.0版本客户端导入 ANSI as UTF-8 的字符集 格式sql 文件进行数据的导入, 然后检查了所有的系统环境的字符集和plsql 的字符集 都OK 的但 ...
- oracle 数据库启动停止小结
---登录sqlplus sqlplus /nolog conn / as sysdba shutdown immediate --启动数据库有两种方式 startup 会自动完成重启数据库的所有步 ...
- 【CF1181D】Irrigation
题目大意:给定 M 个城市,每年会选出一个城市举办比赛,现给出前 N 年城市举办比赛的情况.在接下来的年份中,每年会在举办比赛次数最小的城市举办比赛,如果有很多城市举办次数均为最小值,则在编号最小的城 ...
- 动软生成器 model生成模板
<#@ template language="c#" HostSpecific="True" #> <#@ output extension= ...
- Mybatis 中 refid是什么意思
1.首先定义一个sql标签,一定要定义唯一id 例:<sql id="Base_Column_List" > name,age </sql> 2.然后通过 ...
- 51nod 1120 机器人走方格V3
1120 机器人走方格 V3 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只 ...