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 相关文章推荐
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
jquery+css3问卷答题卡翻页动画效果示例
Oct 26 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
详解Angualr 组件间通信
Jan 21 Javascript
JavaScript 详解预编译原理
Jan 22 Javascript
BootStrap中的Fontawesome 图标
May 25 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
Node.js API详解之 net模块实例分析
May 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
python实现图片批量剪切示例
2014/03/25 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python3.4实现邮件发送功能
2018/05/28 Python
django ajax json的实例代码
2018/05/29 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
教研活动总结
2014/04/28 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
民事起诉书范本
2015/05/19 职场文书
开国大典观后感
2015/06/04 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
详解Vue router路由
2021/11/20 Vue.js