热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

详解React父组件和子组件的数据传输

这篇文章主要介绍了React父组件和子组件的数据传输的相关资料,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下

在学习 React 框架组件间数据传输知识点前,我们需要先明确几点使用原则。

  1. React的组件间通讯是单向的。数据必须是由父级传到子级或者子级传递给父级层层传递。
  2. 如果要给兄弟级的组件传递数据,那么就要先传递给公共的父级而后在传递给你要传递到的组件位置。
  3. 这种非父子关系的组件间传递数据,不推荐使用这种层层传递的方式;而是选择使用维护全局状态功能模块(Redux)

一、父组件向子组件传递数据

父组件向子组件传递数据是通过在父组件中引用子组件时,在子组件标签设置传输数据的属性;而子组件中通过 this.props 接受传过来的数据;这样就实现了父组件向子组件的数据传输。

1.1、父组件代码

import React, { Component } from 'react';
import './App.css';
import Child from './child'
class App extends Component {
    constructor(props){
        super(props);
        this.state={
            msg:'父类的消息',
            name:'John',
            age:99
        }
    }
    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面传过来的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }
  render() {
    return (
      

Message: {this.state.msg}

); } } export default App;

代码说明:父组件在使用子组件(Child)的过程中,对子组件传输了两个属性(age和name)和一个方法(callback 先不考虑)。

关键代码:

1.2、子组件代码

import React from "react";
class Child extends React.Component{
    constructor(props){
        super(props);
        this.state={
            name:'Andy',
            age:31,
            msg:"来自子类的消息"
        }
    }
    change=()=>{
        this.props.callback(this.state.msg,this.state.name,this.state.age);
    }
    render(){
        return(
            
{this.props.name}
{this.props.age}
) } } export default Child;

代码说明:子组件中在 render 中直接使用 this.props 接受父组件传输的数据,并直接使用。不推荐子组件将接受到的数据,再使用this.setSate 方式处理。

关键代码:

{this.props.name}
{this.props.age}

二、子组件向父组件传输数据

React 框架中子组件向父组件传输数据,要依赖于父组件向子组件传输数据。实际上就是父组件将自己作用域的函数传输给子组件;子组件调用该函数,并将要传输的数据,通过函数的参数的形式,传输给父组件。

2.1、父组件代码

上面的代码示例中,父组件中定义了函数,并将这个函数传输给了子组件。

class App extends Component {
......
    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面传过来的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }
  render() {
    return (
      
); } } export default App;

父组件将自己作用域的函数传递给子组件,子组件在通过 this.props 调用此函数的过程中,通过参数的方式将数据传输到组组件中。
这里父组件有三个形参:msg,name,age;子组件将数据传输过来后,父组件会将其使用 this.setState 方式处理。

2.2、子组件代码

子组件通过使用 this.props 接受到父组件传输过来的函数;并调用此函数通过参数的方法,传输数据给父组件。

class Child extends React.Component{
......
    change=()=>{
        this.props.callback(this.state.msg,this.state.name,this.state.age);
    }
    render(){
        return(
            
) } } export default Child;

子组件中创建了一个方法 change(),此方法和点击事件 onClick 绑定;change() 方法中会调用 this.props.callback() 函数(父组件传输过来的函数);函数的实参就是子组件传输给父组件的数据。

以上就是详解React 父组件和子组件的数据传输的详细内容,更多关于React 父组件和子组件的数据传输的资料请关注其它相关文章!


推荐阅读
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 探讨如何在职业生涯中脱颖而出,研究表明刻意练习而非单纯的经验或天赋是关键。文章分析了为什么一些人即使有多年经验也未能成为专家,而另一些人则能在短时间内达到卓越水平。 ... [详细]
  • 本文详细介绍了W3C标准盒模型和IE传统盒模型的区别,探讨了CSS3中box-sizing属性的使用方法及其在布局中的重要性。通过实例分析,帮助读者更好地理解和应用这一关键概念。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
author-avatar
嗳__霞骸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有