深入理解React组件传值(组合和继承)

在文章之前,先把这句话读三遍

Props 和组合为你提供了清晰而安全地定制组件外观和行为的灵活方式。注意:组件可以接受任意 props,包括基本数据类型,React 元素以及函数。

来源于React中文文档,组合和继承的一句话

其实这句话之前看过很多遍,主要还是应用于数据获取上。

在完全理解这句话之前,在写子组件改变兄弟子组件的状态上,没有头绪,同事上午跟我讲解了,我自己再把代码重新写一遍就认识到了,我完全忽略了组件传函数的方法,解锁这个方法以后,再写代码如同打开了一扇大门。

下面来看例子:

以上是一个页面,四个组件,页面里面嵌套第一个组件,组件1嵌套组件2,组件2嵌套组件3,组件3嵌套组件4

所有组件均可以改变其他组件的数据

代码

页面page

import React, { Component } from "react";
import First from "./Component/First";

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      changeText: "我是初始值"
    };
  }

  onClick = () => {
    this.setState({
      changeText: "改变了初始值"
    });
  };

  Reset = () => {
    this.setState({
      changeText: "我是初始值"
    });
  };

  render() {
    const { changeText } = this.state;

    return (
      <div>
        <div style={{ fontSize: "25px", marginBottom: "10px" }}>
          我是组件传值Title
        </div>
        <div style={{ color: "blue" }}>
          我是页面层changeText:{this.state.changeText}
        </div>
        <First
          onClick={this.onClick}
          Reset={this.Reset}
          changeText={changeText}
        />
      </div>
    );
  }
}

 组件一

import React, { Component } from "react";
import { Button } from "antd";
import Second from "./Second";

export default class First extends Component {
  render() {
    return (
      <div>
        <p>我是组件1的文字: {this.props.changeText}</p>
        <Button
          type="primary"
          onClick={this.props.onClick}
          style={{ marginBottom: "10px" }}
        >
          First
        </Button>

        <Button
          type="default"
          onClick={this.props.Reset}
          style={{ marginLeft: "30px" }}
        >reset</Button>
        <Second changeText={this.props.changeText} onClick={this.props.onClick}/>
      </div>
    );
  }
}

  组件二

import React, { Component } from ‘react‘
import {Button} from ‘antd‘
import Third from ‘./Third‘

export default class Second extends Component{

  render(){
    return(
        <div>
          <p>我是组件2的文字 :{this.props.changeText}</p>
          <Button type=‘primary‘ onClick={this.props.onClick} style={{marginBottom:‘10px‘}}>Second</Button>
          <Third changeText={this.props.changeText} onClick={this.props.onClick}/>
        </div>
    )}
}

  组件三

import React, { Component } from ‘react‘
import {Button} from ‘antd‘
import Fourth from ‘./Fourth‘

export default class Third extends Component{

  render(){
    return(
        <div>
          <p>我是组件3的文字: {this.props.changeText}</p>
          <Button type=‘primary‘ onClick={this.props.onClick} style={{marginBottom:‘10px‘}}>third</Button>
          <Fourth changeText={this.props.changeText} onClick={this.props.onClick}/>
        </div>
    )}
}

  组件四

import React, { Component } from ‘react‘
import {Button} from ‘antd‘

export default class Fourth extends Component{

  render(){
    return(
        <div>
          <p>我是组件4的文字 :{this.props.changeText}</p>
          <Button type=‘default‘ onClick={this.props.onClick} style={{marginBottom:‘10px‘}}>fourth</Button>
        </div>
    )}
}

  文件目录

这样就可以实现操作state,改变所有页面的内容。

如果想更灵活,可以引入mobx

 

原文地址:https://www.cnblogs.com/rong88/p/11763846.html

时间: 2024-10-07 17:40:59

深入理解React组件传值(组合和继承)的相关文章

react组件传值

父组件向子组件传值 父组件通过属性进行传递,子组件通过props获取 //父组件class CommentList extends Component{ render(){ return( <div> <Comment comment={information}/> </div> ) }}//子组件class Comment extends Component{ render(){ return( <div> <span>{this.props.

React 组件传值 父传递儿子

10===> 传递参数 import React from "react" //一定要导入React // 函数类型去创建组件 export function Web1(props){ return <div> 我是以函数的形式创建的组件 <p> {props.name}</p> </div> } // 以类的形式创建组件 这一种传递参数要使用 this 它是挂载到实例上的 export class Web2 extends Rea

[转] 深入理解React 组件状态(State)

React 的核心思想是组件化的思想,应用由组件搭建而成,而组件中最重要的概念是State(状态),State是一个组件的UI数据模型,是组件渲染时的数据依据. 一. 如何定义State 定义一个合适的State,是正确创建组件的第一步.State必须能代表一个组件UI呈现的完整状态集,即组件的任何UI改变,都可以从State的变化中反映出来:同时,State还必须是代表一个组件UI呈现的最小状态集,即State中的所有状态都是用于反映组件UI的变化,没有任何多余的状态,也不需要通过其他状态计算

深入理解React 组件状态(State)

React 的核心思想是组件化的思想,应用由组件搭建而成,而组件中最重要的概念是State(状态),State是一个组件的UI数据模型,是组件渲染时的数据依据. 一. 如何定义State 定义一个合适的State,是正确创建组件的第一步.State必须能代表一个组件UI呈现的完整状态集,即组件的任何UI改变,都可以从State的变化中反映出来:同时,State还必须是代表一个组件UI呈现的最小状态集,即State中的所有状态都是用于反映组件UI的变化,没有任何多余的状态,也不需要通过其他状态计算

理解React的组件

理解React组件 虽然一直用React写东西,但却不曾从原生去看待react组件的渲染方式,今天就打算深入探讨.有什么理解不对的欢迎指正 功能上看React组件 现在有一个web网站,这个网站可以实现很多功能,我们依据功能,把他们分成一个个小功能碎片,每个小功能碎片需要更多逻辑功能,还可以继续细分.这里React组件就是相当于这样一个个可组合的功能单元,可并列,可嵌套. 从结构上看React组件 创建 一个React组件被创建,包含React nodes和其他react组件.React nod

React组件生命周期小结

转载自:http://www.jianshu.com/p/4784216b8194 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函数来控制组件在生命周期的各个阶段的动作. 在ES6中,一个React组件是用一个class来表示的(具体可以参考官方文档),如下: // 定义一个TodoList的React组件,通过继承React.Component来实现 class Tod

React学习笔记(三) 组件传值

组件嵌套后,父组件怎么向子组件发送数据呢? 答案是: this.props <script type="text/babel"> var MyFirst = React.createClass({ getInitialState : function(){ return { myMessage: ['我是父组件data1','我是父组件data2','我是父组件data3',] } }, render : function(){ return ( <div> &

#003 React 组件 继承 自定义的组件

主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属性,怎么办? [和 面向对象的语言,C#,Java 的基类 思想是 一样的] 如果公用的东西,是一些方法,可以 使用 React 的 Mixins(ES5) ,高阶组件(ES6)[高阶函数不太了解,如何使用,去找下资料 ] 但是如果有公用的属性,那么就有点 力不从心了 在想,React 中,是否可用

react基础总结篇1,定义组件实现父子组件传值

前端时间学习了vue,这几天开始入手react了. react项目搭建起来之后,我们一定会定义很多个组件.同样的也会涉及到父子组件的传值.今天来整理一下这个知识. 1,定义子组件步骤 1,引入react. import React,{Component} from 'react'; import './style.less'; 2,写组件并export default导出去用到了es6中的calss语法,提前说一下,this.props.content用来接收父组件中content的值,this