壹  、了解React传值的数据

 一、 创建组件的方法

    一 . 1  通过function声明的组件特点是:

      1)function创建的组件是没有state属性,而state属性决定它是不是有生命周期。

      2)function没有constructor构造函数,

      3)function的渲染方法是直接调用。

      4)function中不可以用箭头函数

    一 . 2 通过class声明组件的特点:

      1)class组件有state属性,所以class是有声明周期的。

      2)class组件中有constructor构造函数。

      3)class组件通过render方法进行渲染,类需要先实例化再去调用实例化对象上的render方法。

      4)class组件中可以用箭头函数。

 二 、 props属性和state属性

    二 . 1  props属性及用法

        二 . 1 . 1 proprs属性是组件之间用来传递参数的,但是props的数据是不可以修改的。并且function中没有构造器,所以只有porps属性传

               递数据。

        二 . 1 . 2 用法

            {this.props.name}

            (具体用法参   贰、React  中代码)

    二 . 2  state属性以及用法

      二 . 1 . 1  state属性,class声明的组件中有constructor构造函数,可以声明state属性,state属性是class私有的属性,所以值是可以修改的。

      二 . 1 . 2 用法

          {this.state.[name]}

          修改

          {this.setState({ name:值 })}

          (具体用法参   贰、React  中代码)

贰  、React  传值

    HTML页面

  

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Web site created using create-react-app"/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

  

一、父组件向子组件传值

      一 . 1  先声明父组件,用来向Son组件传值。

         

//引入React组件
import React from 'react';
//引入React-dom组件
import ReactDOM from 'react-dom';
//引入子组件Son
import Son from './Son'; //声明一个父组件名为Father
class Father extends React.Component{
//类自带的构造函数constructor
constructor(){
//继承React
super();
//声明一个类函数专属的状态state
this.state={
message:"hello,This is my son's data。。。"
}
}
//渲染方法,类组件中必须有的渲染方法。
render(){
//渲染方法中必须有的return 返回值,并且返回值最外层必须是只有一个标签。
return (
//如果页面中不希望有无用的标签,可以用React中自带的<React.Fragment>标签
<React.Fragment>
{/*实例化Son组件并向Son组件传递数据,渲染到页面*/}
<Son mess={this.state.message} />
</React.Fragment>
);
}
} //获取目标元素,并渲染
ReactDOM.render(<Father />,document.querySelector("#root"))

  一 . 2 声明一个Son组件,接受Father组件的数据,并向父组件返回渲染数据。

//引入React
import React from 'react'; //声明一个子组件,名为Son
class Son extends React.Component{
//声明render方法
render(){
//return返回
return(
<React.Fragment>
<h1>这是Son组件</h1>
{/* 调用组件之间传参props 渲染数据到页面 */}
{this.props.mess}
</React.Fragment>
);
}
} //向外暴露自己
export default Son;

二、子组件向父组件传值

    二  .  1  声明一个父组件,名为Father。

        

//引入React组件
import React from 'react';
//引入React-dom组件
import ReactDOM from 'react-dom';
//引入子组件Son
import Son from './Son'; //声明一个父组件名为Father
class Father extends React.Component{
//声明一个类中自带的构造函数
constructor(){
//继承react
super();
//声明一个state状态
this.state={
message:""
}
}
//声明一个用来接收子组件数据的方法
getSonMess(msg){
this.setState({
message:msg
})
}
//渲染方法
render(){
return(
<React.Fragment>
    <h1>这是Father组件</h1>
{/* 实例化子组件 */}
<Son mess={this.getSonMess.bind(this)} />
<hr />
{/* 输出从Son组件中获取的数据 */}
<h1>这是从Son组件中获取的数据</h1>
{this.state.message}
</React.Fragment>
);
}
} //获取目标元素,并渲染
ReactDOM.render(<Father />,document.querySelector("#root"))

  

二  .  2 声明一个子组件Son,向父组件Father传数据

  

import React from 'react';

class Son extends React.Component{
//创建构造函数
constructor(){
super();
//创建数据
this.state={
message:"这是在Son子组件生成的数据。。"
}
}
//创建一个方法用来向父组件传数据
addFatherMess(){
this.props.mess(this.state.message)
} render(){
retrun(
<React.Fragment>
          <h1>这是Son组件</h1>
{/* 绑定一个点击事件,向父组件传数据 */}
<button onClick={this.addFatherMess.bind(this)}>点击获取数据</button>
</React.Fragment>
);
}
} //向外暴露
export default Son;

三、 兄弟相传

  三  .  1  声明一个Father组件,用来接收Son组件的数据,然后发送到Son2组件,并向页面进行渲染

    

//引入react
import React from 'react';
//引入react-dom组件
import ReactDOM from 'react-dom';
//引入 Son 组件
import Son from './Son';
//引入 Son2 组件
import Son2 from './Son2'; //创建一个Father组件
class Father extends React.Component{
//创建构造函数
constructor(){
//继承React
super();
//创建state状态
this.state={
message:""
}
}
//通过getSonMess方法获取子组件参数,并修改this.state.message数据
getSonMess(msg){
this.setState({
message:msg
})
} //声明render方法
render(){
//render方法中必须有一个返回值,是渲染页面的排版,
return (
<React.Fragment>
<h1>这是Father.js</h1>
<hr />
{/* 实例化Son组件,从Son组件获取数据和渲染页面 */}
<Son mess={this.getSonMess.bind(this)}></Son>
<hr />
{/* 实例化Son2组件,向Son2组件传递数据和渲染页面 */}
<Son2 data={this.state.message}></Son2> </React.Fragment>
);
}
} //获取目标元素,并渲染页面
ReactDOM.render(<Father />,document.querySelector(#root))
//

  三 .  2   声明一个Son组件,用来生成数据,然后把数据传递给父组件

//引入react组件
import React from 'react'; //声明一个Son组件,用来向父组件传值
class Son extends React.Component{
//点击事件绑定的函数
sonClick(){
//生成数据,并赋值给参数
this.props.mess("Son里生成的数据")
} render(){
return (
<div>
<h1>这是Son.js</h1>
{/* 通过点击事件绑定,把数据传给父组件 */}
<button onClick={this.sonClick.bind(this)}>Son里的按钮点击获取数据传到Son2.js</button>
</div>
);
}
} //向外暴露自己
export default Son;

  三 .  3  创建一个Son2组件,用来接收Father组件传过来,Son组件给Father组件的数据 .

//引入react
import React from 'react'; //声明一个Son2组件用来接收Father组件接收Son组件的数据
class Son2 extends React.Component{ render(){
return (
<div>
{/* 获取数据并渲染通过props */}
<h1>这是Son2.js</h1>
拿到{this.props.data}
</div>
);
}
} //向外暴露自己
export default Son2;

  

注:以上为个人理解,如若有误,请留言指出。谢谢!

React 组件间传值的更多相关文章

  1. react组件间传值详解

    一.父子组件间传值     <1>父传子         父组件:

  2. React 页面间传值的个人总结

    react 组件之间传值的方案有很多,下面是我个人经验的总结 props 来传递值 传值方式: 通过props 获取值 通过props 提供的func去修改值 优点: 不需要任何第三方的组件,纯rea ...

  3. React 组件间通讯

    React 组件间通讯 说 React 组件间通讯之前,我们先来讨论一下 React 组件究竟有多少种层级间的关系.假设我们开发的项目是一个纯 React 的项目,那我们项目应该有如下类似的关系: 父 ...

  4. React 组件间通信介绍

    React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍:   父组件向子 ...

  5. vue 和 react 组件间通信方法对比

    vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...

  6. Vue 组件间传值

    前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...

  7. Vue中组件间传值常用的几种方式

    版本说明: vue-cli:3.0 一.父子组件间传值 1.props/$emit -父组件==>>子组件: 子组件中通过定义props接收父组件中通过v-bind绑定的数据 父组件代码 ...

  8. Vue学习(二)-Vue中组件间传值常用的几种方式

    版本说明:vue-cli:3.0 主要分为两类: 1.父子组件间的传值 2.非父子组件间的传值 1.父子组件间传值 父组件向子组件传值 第一种方式: props 父组件嵌套的子组件中,使用v-bind ...

  9. React Native 系列(五) -- 组件间传值

    前言 本系列是基于React Native版本号0.44.3写的.任何一款 App 都有界面之间数据传递的这个步骤的,那么在RN中,组件间是怎么传值的呢?这篇文章将介绍到顺传.逆传已经通过通知传值. ...

随机推荐

  1. SQL的子查询与JOIN的小试牛刀

    //学生表CREATE TABLE student( ID INT PRIMARY KEY, s_name ) NOT NULL, class_id INT NOT NULL); , "qf ...

  2. linux make: *** No targets specified and no makefile found. Stop.

    [root@localhost Python-]# ./configure checking build system type... x86_64-unknown-linux-gnu checkin ...

  3. 部署多个tomcat

    当需要部署多个tomcat的时,为了避免启动tomcat时出现冲突, 修改tomcat中的某些参数,编辑bin/startup.bat,避免启动路径错误,默认会启动CATALINA_HOME所指向的t ...

  4. SpringBoot2.0总结

    与SpringCloud关系 与SpringMVC关系 与JFinal区别 常用注解: @RestController  @EnableAutoConfiguration   @ComponentSc ...

  5. js中按下回车触发事件

    方法一:document.onkeydown = function (e) { // 回车提交表单// 兼容FF和IE和Opera var theEvent = window.event || e; ...

  6. 【leetcode】996. Number of Squareful Arrays

    题目如下: Given an array A of non-negative integers, the array is squareful if for every pair of adjacen ...

  7. php对象方法链式调用编程

    E:\html\tproject\framework\modules\common\classes\Common\CURL.php <?php /** * 同步发起请求 * 针对http协议的8 ...

  8. mysql启动脚本-my

    #!/bin/sh PREFIX=/opt/mysql mysql_username="root" mysql_password=" mysql_port= functi ...

  9. PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题

    PHP CURL与file_get_contents函数都可以获取远程服务器上的文件保存到本地,但在性能上面两者完全不在同一个级别,下面我先来介绍PHP CURL或file_get_contents函 ...

  10. [NOIP模拟测试37]反思+题解

    一定要分析清楚复杂度再打!!!窝再也不要花2h20min用暴力对拍暴力啦!!! 雨露均沾(滑稽),尽量避免孤注一掷.先把暴力分拿全再回来刚正解. 即使剩下的时间不多了也优先考虑认真读题+打暴力而非乱搞 ...