在最近在学 React , 将组件的UI更新稍微整理了一下。

根据业务要求,可能会出现如下的技术实现要求:
1.更新自己
2.更新子组件
3.更新兄弟组件
4.更新父组件
5.父 call 子  function 
6.子 call 父  function

整理代码如下:
更新自己:

import React, { Component } from 'react';
import { Button } from 'antd'; class Me extends Component {
constructor(props){
super(props)
this.state = { Val : }
this.handleClick = this.handleClick.bind( this );
} handleClick(e) {
e.preventDefault();
console.log('The link was clicked.'); this.setState({
Val:
});
} render() {
return (
<div style={{ width:, height:, backgroundColor:"#FF0000" }} >
<span> myValue { this.state.Val } aaa</span>
<Button onClick={ this.handleClick } >更新自己 </Button> </div>
);
}
}
export default Me;

更新儿子

class Son extends Component {
constructor(props){
super(props)
//this.state = { SonVal :10 } } render() {
return (
<div style={{ width:, height:, backgroundColor:"#00FF00" }} >
<span> sonValue { this.props.SonVal } aaa</span> </div>
);
}
} export default Son;
class Me extends Component {
constructor(props){
super(props)
this.state = { Val :, SonVal : }
this.handleClick = this.handleClick.bind( this );
this.handleClick4Son = this.handleClick4Son.bind( this );
} handleClick(e) {
e.preventDefault();
console.log('The link was clicked.'); this.setState({
Val: this.state.Val+
});
} handleClick4Son(e) {
e.preventDefault(); this.setState({
SonVal: this.state.SonVal+
});
} render() {
return (
<div style={{ width:, height:, backgroundColor:"#FF0000" }} >
<span> myValue { this.state.Val } aaa</span>
<Button onClick={ this.handleClick } >更新自己 </Button>
<Button onClick={ this.handleClick4Son } >更新儿子 </Button> <Son SonVal={ this.state.SonVal + } /> </div>
);
}
}

更新兄弟:

更新兄弟, 就需要和老爹相关了, 老爹组件 App (只是命名,可以叫其他) :

import Me from './component/Me'
import Brother from "./component/Brother"; class App extends Component { constructor(props){
super(props)
this.state = { My2SonVal :30 }
this.onMy2SonValChangle = this.onMy2SonValChangle.bind( this ); } onMy2SonValChangle(e) { this.setState({
My2SonVal: e
});
} render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p> <Me chagleBrother={ this.onMy2SonValChangle } />
<Brother BrotherVal={ this.state.My2SonVal }/> </div>
);
}
}

  

兄弟:

class Brother extends Component {
constructor(props){
super(props)
//this.state = { SonVal :10 } } render() {
return (
<div style={{ width:, height:, backgroundColor:"#00FFFF" }} >
<span> brotherValue { this.props.BrotherVal } </span> </div>
);
}
} export default Brother;

自己:

class Me extends Component {
constructor(props){
super(props)
this.state = { Val :, SonVal :, BrotherVal: }
this.handleClick = this.handleClick.bind( this );
this.handleClick4Son = this.handleClick4Son.bind( this );
this.handleClick4Brother = this.handleClick4Brother.bind( this ); } handleClick(e) {
e.preventDefault();
console.log('The link was clicked.'); this.setState({
Val: this.state.Val+
});
} handleClick4Son(e) {
e.preventDefault(); this.setState({
SonVal: this.state.SonVal+
});
} handleClick4Brother(e) {
e.preventDefault(); this.state.BrotherVal = this.state.BrotherVal+
this.props.chagleBrother( this.state.BrotherVal ) } render() {
return (
<div style={{ width:, height:, backgroundColor:"#FF0000" }} >
<span> myValue { this.state.Val } aaa</span>
<Button onClick={ this.handleClick } >更新自己 </Button>
<Button onClick={ this.handleClick4Son } >更新儿子 </Button>
<Button onClick={ this.handleClick4Brother } >更新兄弟 </Button> <Son SonVal={ this.state.SonVal + } /> </div>
);
}
}
export default Me;

自此我们已经完成了: 更新自己, 更新子组件,更新兄弟组件,更新父组件(调整一下更新兄弟组件代码), 子 call 父 function 
还需要完成: 父  call 子

class Me2 extends Component {
constructor(props){
super(props)
this.onSetChild = this.onSetChild.bind(this);
this.handleClick = this.handleClick.bind(this);
}
render() {
return(
<div styles = { { width :, height:, backgroundColor:"#4400FF" } }>
<Child fatherCall={ this.onSetChild } />
<button onClick={this.handleClick} >click</button>
</div>
)
} onSetChild( childObj ){
this.child = childObj;
} handleClick() {
this.child.sonFunction()
} } class Child extends Component {
componentDidMount(){
this.props.fatherCall(this)
} sonFunction(){
console.log('sonFunction --------- ')
} render() {
return ( <div> son Txt </div> )
}
}; export default Me2;

React 关于组件(界面)更新的更多相关文章

  1. 从 React 的组件更新谈 Immutable 的应用

    在介绍 Immutable 如何在 React 中应用之前,先来谈谈 React 组件是如何更新的. React 是基于状态驱动的开发,可以将一个组件看成是一个有限状态机,组件要更新,必须更新状态. ...

  2. React Native组件、生命周期及属性传值props详解

    创建组件的三种方式 第一种:通过ES6的方式创建 /** * 方式一 :ES6 */ export default class HelloComponent extends Component { r ...

  3. React 面向组件化编程 - 封装了webpack - npm run build 产生的包的 /static 引用路径问题

    React 面向组件化编程 面向对象 ----> 面向模块 ----> 面向组件 套路: 注意: 组件名必须大写开头: 只能有一个根标签: <input />虚拟DOM 元素必 ...

  4. react native组件的生命周期

    react native组件的生命周期 一.当页面第一次加载时,会依次调用: constructor() componentWillMount(): 这个函数调用时机是在组件创建,并初始化了状态之后, ...

  5. React Native组件(二)View组件解析

    相关文章 React Native探索系列 React Native组件系列 前言 了解了RN的组件的生命周期后,我们接着来学习RN的具体的组件.View组件是最基本的组件,也是首先要掌握的组件,这一 ...

  6. Android React Native组件的生命周期及回调函数

    熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开 ...

  7. React: React的组件状态机制

    一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通 ...

  8. React: 研究React的组件化

    一.简介大概 在以往的Web开发中,会把web页面所有的复杂控件作为一个单一的整体进行开发,由于控件之间需要进行通信,因此不同的组件之间的耦合度会很多,由于开发一个控件的时候要考虑到控件与控件之间的联 ...

  9. React 之 组件生命周期

    React 之 组件生命周期 理解1) 组件对象从创建到死亡它会经历特定的生命周期阶段2) React组件对象包含一系列的勾子函数(生命周期回调函数), 在生命周期特定时刻回调3) 我们在定义组件时, ...

随机推荐

  1. LAMP 搭建

    p { margin-bottom: 0.25cm; line-height: 120% } LAMP 搭建 承 Ubuntu 17.10.1安装, 定制. 参考 电子工业出版社, Ubuntu完美应 ...

  2. javascript 中的类型

    javascript 中的类型 js 是一门弱语言,各式各样的错误多种多样,特别是确定返回值有问题的时候,你会用什么来进行表示错误? 我一般有三个选择: null '' error {} 第一个选择 ...

  3. 算法题丨Remove Element

    描述 Given an array and a value, remove all instances of that value in-place and return the new length ...

  4. 【漏洞复现】PHPCMS wap模块 SQL注入(附EXP)

    漏洞影响版本:v9.5.8.v9.6.0 Step1: 访问:http://www.xxx.com/index.php?m=wap&a=index&siteid=1, 获取返回的coo ...

  5. 如何在Java中避免equals方法的隐藏陷阱

    摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继 ...

  6. SpringCloud的Hystrix(五) Hystrix机制

    参考链接:http://www.jianshu.com/p/e07661b9bae8 一.前言 大型复杂的分布式系统中,高可用相关的技术架构非常重要.高可用架构非常重要的一个环节,就是如何将分布式系统 ...

  7. Spring Security入门(3-2)Spring Security对接用户的权限系统

    源文链接,多谢作者的分享: http://www.360doc.com/content/14/0727/16/18637323_397445724.shtml 1.原生的spring-security ...

  8. angular中的路径问题

    我们在写项目时会遇到启动页调到引导页,引导页再调到首页, 那我们在用angular框架写这种东西的时候如果我们不细心的话就会遇到问题, 比如说找不到引导页的图片等等. 那我们怎么解决这个问题呢? 首先 ...

  9. 简单聊聊java中的final关键字

    简单聊聊java中的final关键字 日常代码中,final关键字也算常用的.其主要应用在三个方面: 1)修饰类(暂时见过,但是还没用过); 2)修饰方法(见过,没写过); 3)修饰数据. 那么,我们 ...

  10. Scrollbar

    Scrollbar(滚动条)组件用于滚动一些组件的可见范围,可分为垂直和水平的. 用法: from tkinter import * root =Tk() #滚动条组件 sb = Scrollbar( ...