在最近在学 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. JS 上传图片时实现预览

    网页中一张图片可以这样显示: <img src="http://www.letuknowit.com/images/wg.png"/>也可以这样显示:<img s ...

  2. 老帖收藏,留供参考:SpringMvc2.5+Mybatis3.2.7

    一.项目背景 SpringMvc+Mybatis 数据库连接池是阿里巴巴的druid.日志框架式logback 二.配置文件 1.SpringMvc-servlet.xml <?xml vers ...

  3. 新概念英语(1-65)Not a Baby

    新概念英语(1-65)Not a Baby Does Jill take the key to the front door? A:What are you going to do this even ...

  4. MySQL8.0 原子DDL

    Edit MySQL8.0 原子DDL 简介 MySQL8.0 开始支持原子 DDL(atomic DDL),数据字典的更新,存储引擎操作,写二进制日志结合成了一个事务.在没有原子DDL之前,DROP ...

  5. zoj 3981 Balloon Robot

    https://vjudge.net/problem/ZOJ-3981 题意: 有m个座位,其中n个队伍坐在这些位置上,一个队伍一个座位.当一个队A了题之后,他们们会得到气球,假设他们在a时刻A题,但 ...

  6. [Kaggle] dogs-vs-cats之建立模型

    建立神经网络模型,下面要建立的模型如下: (上图来源:训练网络时,打开tensorboard即可观察网络结构,在下一节模型训练的时候会讲到) 下面为具体步骤: Step 0:导入相关库 import ...

  7. [转]最常用的15大Eclipse开发快捷键技巧

    作者:Java我人生(陈磊兴)   原文出处http://blog.csdn.net/chenleixing/article/details/44600587 做Java开发的,经常会用Eclipse ...

  8. PyQuery用法详解

    PyQuery是强大而又灵活的网页解析库,如果你觉得正则写起来太麻烦,如果你觉得BeautifulSoup语法太难记,如果你熟悉jQuery的语法 那么,PyQuery就是你绝佳的选择. 一.初始化方 ...

  9. spring boot / cloud (四) 自定义线程池以及异步处理@Async

    spring boot / cloud (四) 自定义线程池以及异步处理@Async 前言 什么是线程池? 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务.线 ...

  10. Java程序优化之替换swtich

    关键字switch语句用于多条件判断,功能类似于if-else语句,两者性能也差不多,不能说switch会降低系统性能.在绝大部门情况下,switch语句还是有性能提升空间的. 但是在项目代码中,如果 ...