zoukankan      html  css  js  c++  java
  • React 父子组件和非父子组件传值

     
    零、this.props
        可以接收到 外界的传值 和 此组件标签内部自定义的方法
     
        例:
            <one vals={message} sendVal={this.handleReverse.bind(this)}></one>
     
        此时在子组件中打印this.props
            this.props = {
                vals : '**',
                sendVal : fn
            }
     
        由此我们可以进行父子组件之间传值
     
    一、父传子
        在子组件标签中用自定义属性进行传递,接收的时候通过this.props进行接收
        
        /* 父组件【自定义属性为 val 传的值为message】 */
            
    1 <Fragment>
    2     <one val={message}></one>
    3 </Fragment>
     
        /* 子组件【this.props对象中会出现 自定义属性,可以通过this.props.<属性名> 获取传值 】 */
            
    1 render(){
    2     let {val} = this.props;
    3     return (
    4         <Fragment>
    5             <div>接收来自父组件的传值:{val}</div>
    6         </Fragment>
    7     )
    8 }      
     
    二、子传父
        在子组件标签内部用自定义属性定义一个方法传递给子组件 子组件调用这个方法传递参数
     
        /* 父组件 */
            
     1 render(){
     2     return (
     3         <Fragment>
     4             <one send={this.handleRevese.bind(this)}></one>
     5         </Fragment>
     6     )
     7 }
     8  
     9 handleRevese(params){
    10     console.log('来自子组件的传值' + params);
    11 }    
     
        /* 子组件 */
            
     1 render(){
     2     return (
     3         <Fragment>
     4             <button onClick={this.handleSend.bind(this)}>向父组件传值</button>                      
     5         </Fragment>
     6     )
     7 }
     8  
     9 handleSend(){
    10     this.props.send(this.state.mess);
    11 }
    三、非父子【使用自己封装的$on $emit $off】
        One组件
            
     1 render(){
     2     return (
     3         <div>
     4             <button onClick={this.handleTwo.bind(this)}>发送给Two组件</button>
     5         </div>
     6     )
     7 }
     8  
     9 handleTwo(){
    10     Observer.$emit("handle",this.state.oneVal);
    11 }       
        Two组件
            
     1 constructor(){
     2     super();
     3     this.state = {
     4         oneVal:""
     5     }
     6     Observer.$on("handle",(val)=>{
     7         this.setState({
     8             oneVal:val
     9         })
    10     })
    11 }
    12  
    13 render(){
    14     let {oneVal} = this.state;
    15     return (
    16         <div>接收到one组件的值为:{oneVal}</div>
    17     )
    18 }   
     
  • 相关阅读:
    UVA1349 Optimal Bus Route Design 最优巴士路线设计
    POJ3565 Ants 蚂蚁(NEERC 2008)
    UVA1663 Purifying Machine 净化器
    UVa11996 Jewel Magic 魔法珠宝
    NEERC2003 Jurassic Remains 侏罗纪
    UVA11895 Honorary Tickets
    gdb调试coredump(使用篇)
    使用 MegaCLI 检测磁盘状态并更换磁盘
    员工直接坦诚直来直去 真性情
    山东浪潮超越3B4000申泰RM5120-L
  • 原文地址:https://www.cnblogs.com/jokehl/p/9998163.html
Copyright © 2011-2022 走看看