• react 父子组件通信


    1.父组件向子组件传值

    父组件

    import React from "react"
    import ChildrenList from "./ChildrenList "
    
    class Comment extends React.Component {
        constructor(props) {
            super(props);
            this.state = {
              arr: [{
                    "userName": "fangMing", "text": "方明", "result": true
                },{
                    "userName": "liSi", "text": "黎明", "result": true
                },]
             }
       }
    
    render() {
          return (
            <div>
               <ChildrenList arr={this.state.arr} />  //这里把state里面的arr传递到子组件
            </div>
          )
    }
    
    
    
    }
    
    
    export default Comment;
    

    子组件

    import React from "react"
    
    class ChildrenList extends React.Component {
        constructor(props) {
            super(props);
       }
    
    render() {
          return (
          <div className="list">
                    <ul>
                        {
                            this.props.arr.map(item => { //这个地方通过this.props.arr接收到父组件传过来的arr,然后在{}里面进行js的循环
                                return (
                                    <li key={item.userName}>
                                        {item.userName} 评论是:{item.text}
                                    </li>
                                )
                            })
                        }
                    </ul>
                 
                </div>
          )
    }
    
    
    
    }
    
    
    export default ChildrenList ;
    

    2.子组件向父组件传值

    父组件

    import React from "react"
    import ChildrenList from "./ChildrenList "
     
    class Comment extends React.Component {
        constructor(props) {
            super(props);
            this.state = {
                parentText: "this is parent text",   
                 arr: [{
                    "userName": "fangMing", "text": "方明", "result": true
                },{
                    "userName": "liSi", "text": "黎明", "result": true
                },]
            }
        }
     
        fn(data) {
            this.setState({
                parentText: data //把父组件中的parentText替换为子组件传递的值
            },() =>{
               console.log(this.state.parentText);//setState是异步操作,但是我们可以在它的回调函数里面进行操作
            });
     
        }
     
     
     
        render() {
            return (
                <div>
                    //通过绑定事件进行值的运算,这个地方一定要记得.bind(this),
                不然会报错,切记切记,因为通过事件传递的时候this的指向已经改变
                    <ChildrenList arr={this.state.arr} pfn={this.fn.bind(this)} />
                    <p>
                        text is {this.state.parentText}
                    </p>
            
                </div>
     
            )
        }
    }
     
    export default Comment; 
    

    子组件

    import React from "react"
     
    class ChildrenList 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 ChildrenList ;  
    
  • 相关阅读:
    Spring @Async开启异步任务
    Spring中@Async用法总结
    分布式任务调度平台XXL-JOB
    异常的概念和Java异常体系结构
    Java中主线程如何捕获子线程抛出的异常
    java主线程捕获子线程中的异常
    springboot线程池@Async的使用和扩展
    全面理解Java内存模型(JMM)及volatile关键字
    C++异常处理入门
    VC6下深入理解new[]和delete[](在多线程下new和delete的时候,必须选择上多线程库,不然可能造成进程崩溃)
  • 原文地址:https://www.cnblogs.com/IT123/p/10881158.html
Copyright © 2020-2023  润新知