您身边的网站建设专家
成功案例

【建站服务】甘肃设计网页公司-域名申请

日期: 2022-09-21 06:03:20 浏览数:7


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


甘肃设计网页公司

网站建设.png

  1. <Name name={this.props.name} url={this.props.url}  .../>

    那么我们怎么样吧父属性直接赋值给子组件的props参数呢?如下写法即可:

    <Name props={this.props}/>

    这样写就非常简洁了,也就子控件和父控件都有了同样数据结构的 props 参数。

    很多情况下我们调试页面时,看到的参数名在父控件和子控件中部一样,但是表示的值是同一个,写这段代码的人可能还记得这个参数是转译的,但是其他人阅读时就会摸不着头脑,在效率上是处于弱势的,所以我们一般建议引用父组件参数尽量保持名称不变,以便以后维护。

    xjjuser

       xjjuser

      xjj***r@yeah.net

    4年前 (2018-08-10)
  2.    doo0301@qq.com

      doo***1@qq.com

    17

    Props 实现父与子通信:

    import React from 'react';import ReactDOM from 'react-dom';export default class CptBody extends React.Component{
        constructor(){
            super();
            this.state = {username : "父级名称"}; //可以传json等很多格式(这个是初始化赋值)
        }
        //click事件函数
        changeAge(){
            this.setState({username:"父级名称--修改"})
        }
        //change事件函数
        changeUsername(event){
            this.setState({username:event.target.value})
        }
        render(){
           return(
                <div>
                    <h1>这里是主体内容部分</h1>
                    <p>{this.state.username}</p>
                    <input type="button" value="点击改变username" onClick={this.changeAge.bind(this)}/>
                    <BodyChild changeUsername={this.changeUsername.bind(this)}/>
                </div>
            )
        }}class BodyChild extends React.Component{
        render(){
            return(
                <div>
                    <p>子页面输出:<input type='text' onChange={this.props.changeUsername} /></p>
                </div>
            )
        }}

    如果想实现“父级”同步“子级”的数据,则需要在子级数据发生改变的时候,调用执行父级props传来的回调,从而达到父级同步更新的效果。

    doo0301@qq.com

       doo0301@qq.com

      doo***1@qq.com

    4年前 (2018-11-22)
  3.    独孤尚良

      yut***hanlin@qq.com

    30

    借助楼上的代码,做了个改良,下面的父子模块互相传递参数。

    class CptBody extends React.Component{
        constructor(){
            super();
            this.state = {username : 1}; //可以传json等很多格式(这个是初始化赋值)
        }
        //click事件函数
        changeAge(){
            this.setState({username:1+this.state.username})
        }
        //change事件函数
        changeUsername(event){
            this.setState({username:parseInt(event.target.value)})
        }
        render(){
           return(
                <div>
                    <h1>下面的操作有惊喜</h1>
                    <p>{this.state.username}</p>
                    <input type="button" value="点击改变username" onClick={()=>this.changeAge()}/>
                    <BodyChild changeUser


  changeUsername(event){

        this.setState({username:parseInt(event.target.value)})

    }

    render(){

       return(

            <div>

                <h1>下面的操作有惊喜</h1>

                <p>{this.state.username}</p>

                <input type="button" value="点击改变username" onClick={()=>this.changeAge()}/>

                <BodyChild changeUsername={this.changeUsername.bind(this)} getname={this.state.username}/>

            </div>

        )

    }

}



class BodyChild extends React.Component{

    render(){

        return(

            <div>

                <p>子页面输入:<input type='text' value={this.props.getname} onChange={this.props.changeUsername} /></p>


            </div>

        )

    }

}

ReactDOM.render(

    <CptBody  />,

    document.getElementById('example')

);

尝试一下 »


BodyChild 组件的 render 函数返回值 jsx 中 <p> 的 value 是从父组件获取的 getname 这个变量值,onChange 获取的是 changeUsername 这个函数,所以如果文本框中的值改变了,改变值这个事件会触发 changeUsername 这个函数,这个函数会获得事件的值,即我们文本框修改后的值,并将其赋值给父组件的 state.username 这个变量。而父组件的这个变量改变后,state 随之改变,这时候,render 会重新启动,所以我们会看到修改后的值。


父组件的 jsx 中有一个箭头函数,有一个 bind 函数,这两者有什么区别吗?经验证,这两者是可以互换的。


onClick={this.changeAge.bind(this)} 和 onClick={()=>this.changeAge()} 可以互换。

甘肃设计网页公司



上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站