zoukankan      html  css  js  c++  java
  • React学习第二天

    父传子

    class HelloWorld extends React.Component{
        constructor(props) {
            super(props)
            this.state = {
                isActive:false
            }
        }
        render() {
            return (
                <div>
                    <button onClick={this.ShowChild}>显示子元素</button>
                    <ChildrenDom isActive={this.state.isActive} />
                </div>
    
    
            )
        }
        ShowChild = ()=>{
            if(this.state.isActive){
                this.setState({
                    isActive:false
                })
            }else{
                this.setState({
                    isActive:true
                })
            }
        }
    }
    
    
    class ChildrenDom extends React.Component{
        constructor(props) {
            super(props)
        }
        render() {
            // console.log(this.props.isActive)
            let strClass = ''
            if(this.props.isActive){
                strClass = ' active'
            }else{
                strClass = ''
            }
            return (
                <div>
                    <h1 className={'content'+strClass}>我是子元素</h1>
                </div>
            )
        }
    }
    
    ReactDOM.render(
        <HelloWorld />,
        document.querySelector('#root')
    )

    在父元素中使用state去控制子元素props的从而达到父元素数据传递给子元素

    在父元素中render函数的return中写入子元素jsx对象

    通过父类元素中的点击事件,改变给子元素的传参

    不过改变父元素state中的值,需要使用setState方法,不然改变无效

    父元素传递的参数,会放在子元素的props中

    props还能传递函数,子元素调用传递的函数,实现 子元素改变父元素的值

    子传父

    调用父元素的函数从而操作父元素的数据,从而实现数据从子元素传递至父元class ParentCom extends React.Component{

        constructor(props) {
            super(props)
            this.state = {
                num:0
            }
        }
        render() {
            return (
                <div>
                    <h1>我是父元素中的{this.state.num}</h1>
                    <ChildCom add={this.setNum} />
                </div>
            )
        }
        setNum=()=>{
            this.setState({
                num: this.state.num+1
            })
        }
    }
    
    class ChildCom extends React.Component{
        constructor(props) {
            super(props)
        }
        render() {
            return (
                <div>
              {/*第一种方法*/}
    {/*<button onClick={this.setParent}>我是子元素的按钮</button>*/}
              {/*第二种方法*/}
    <button onClick={()=>{this.props.add()}}>我是子元素的按钮2</button> </div> ) } // setParent=()=>{ // this.props.add() // } } ReactDOM.render( <ParentCom />, document.querySelector('#root') )

    在子元素中的点击事件,我用了两种方法

    第一种方法不能直接调用父元素传递过来的函数,需要调用子元素中的方法去调用props中的方法

    第二种方法使用的箭头函数(类似于lambda)来直接使用props中的传递函数

  • 相关阅读:
    .Net编程接口中的迭代器(转)
    微软,您的.net为中国程序员带来了什么?(转)
    二进制,八进制,十进制,十六进制转换
    简单实现SQL Server2000数据库缓存
    联合查询
    也谈用反射实现Enum→String映射:一种重视性能的方法 (转)
    javascript事件列表解说(转)
    ASP.NET上传控件
    杂杞
    在.net中生成wml
  • 原文地址:https://www.cnblogs.com/asdaa/p/12392872.html
Copyright © 2011-2022 走看看