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 相关文章推荐
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
May 23 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
浅谈 jQuery 事件源码定位问题
Jun 18 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
Nov 09 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
vue项目引入ts步骤(小结)
Oct 31 Javascript
es6函数之rest参数用法实例分析
Apr 18 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
2021年最新CPU天梯图
2021/03/04 数码科技
php 运行效率总结(提示程序速度)
2009/11/26 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
Smarty保留变量用法分析
2016/05/23 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
jquery异步请求实例代码
2011/06/21 Javascript
Javascript面向对象编程
2012/03/18 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
如何理解python中数字列表
2020/05/29 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
python连接mysql有哪些方法
2020/06/24 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
运动会闭幕词
2015/01/28 职场文书
学雷锋日活动总结
2015/02/06 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
vue实现拖拽交换位置
2022/04/07 Vue.js