React父子组件间的传值的方法


Posted in Javascript onNovember 13, 2018

父组件向子组件传值:

父组件:

import React, { Component } from 'react';
import Child from './chlid';

class parent extends Component{
 constructor(props) {
  super(props);
  this.state = {
   txt0:"默认值0",
   txt1:"默认值1"
  }
 }
 componentDidMount(){

 }
 parToson(){
  this.setState({
   txt0:"哈哈哈哈"
  })
 }
 sonToPar(e){
  this.setState({
   txt1:e
  })
 }
 render(){
  const style={
   paddingLeft:"150px"
  }
  return(
   <div style={style}>
    <button onClick={this.parToson.bind(this)}>传值给子组件</button>
    <div>接受子组件的传值为:{this.state.txt1}</div>
    <br/>
    <Child message={this.state.txt0} getsonToPar={this.sonToPar.bind(this)}/>
   </div>
  )
 }

}

子组件:

import React, { Component } from 'react';

class child extends Component{
 constructor(props) {
  super(props);
  this.state = {
   msg:"啦啦啦啦"
  }
 }
 componentDidMount(){

 }
 render(){
  return(
   <div>
    <div>接受父组件传的值为:{this.props.message}</div>
    <button onClick={()=>this.props.getsonToPar(this.state.msg)}>传值给父组件</button>
   </div>
  )
 }
}

export default child;

github:https://github.com/Rossy11/react/blob/master/src/component/router4.js

补充:

子组件向父组件传值,

同样是父组件:

import React from "react"

import ComentList from "./ComentList"
class Comment extends React.Component {

 constructor(props) {

  super(props);

  this.state = {

   parentText: "this is parent text",
   arr: [{

    "userName": "fangMing", "text": "123333", "result": true

   }, {

    "userName": "zhangSan", "text": "345555", "result": false

   }, {

    "userName": "liSi", "text": "567777", "result": true

   }, {

    "userName": "wangWu", "text": "789999", "result": true

   },]

  }

 }
 fn(data) {

  this.setState({

   parentText: data //把父组件中的parentText替换为子组件传递的值

  },() =>{

   console.log(this.state.parentText);//setState是异步操作,但是我们可以在它的回调函数里面进行操作

  });

 

 }
 render() {

  return (

   <div>

    //通过绑定事件进行值的运算,这个地方一定要记得.bind(this),

   不然会报错,切记切记,因为通过事件传递的时候this的指向已经改变

    <ComentList arr={this.state.arr} pfn={this.fn.bind(this)}> 

    </ComentList>

    <p>

     text is {this.state.parentText}

    </p>

  

   </div>

 

  )

 }

}
export default Comment;

子组件:

import React from "react"
class ComentList extends React.Component {

 constructor(props) {

  super(props);

  this.state = ({

   childText: "this is child text"

  })
 }

 clickFun(text) {

  this.props.pfn(text)//这个地方把值传递给了props的事件当中

 }

 render() {

  return (

   <div className="list">

    <ul>

     {

      this.props.arr.map(item => {

       return (

        <li key={item.userName}>

         {item.userName} 评论是:{item.text}

        </li>

       )

      })

     }

    </ul>

    //通过事件进行传值,如果想得到event,可以在参数最后加一个event,

    这个地方还是要强调,this,this,this

    <button onClick={this.clickFun.bind(this, this.state.childText)}>

     click me

    </button>

   </div>

  )

 }

}
export default ComentList;

before:

React父子组件间的传值的方法

after:

React父子组件间的传值的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
Mar 06 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
jQuery之折叠面板的深入解析
Jun 19 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
Jan 14 Javascript
使用JavaScript进行表单校验功能
Aug 01 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
Aug 20 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 #Javascript
详解如何用typescript开发koa2的二三事
Nov 13 #Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 #Javascript
koa源码中promise的解读
Nov 13 #Javascript
vue-router传递参数的几种方式实例详解
Nov 13 #Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 #Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 #Javascript
You might like
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
浅析php工厂模式
2014/11/25 PHP
php把数组值转换成键的方法
2015/07/13 PHP
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
谈谈jQuery之Deferred源码剖析
2016/12/19 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
linux下安装easy_install的方法
2013/02/10 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
python字符串中的单双引
2017/02/16 Python
python django事务transaction源码分析详解
2017/03/17 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python按比例随机切分数据的实现
2019/07/11 Python
Django在Model保存前记录日志实例
2020/05/14 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
升职自荐书范文
2013/11/28 职场文书
后进生转化工作制度
2014/01/17 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
倡议书格式范文
2014/04/14 职场文书
优秀学生评语大全
2014/04/25 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
防火标语大全
2014/10/06 职场文书
公司禁烟通知
2015/04/23 职场文书
学校光盘行动倡议书
2015/04/28 职场文书