收藏此站 联系我们 网站
当前位置:首页» 公司新闻 » 【建站服务】专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-甘肃上往建站-域名申请

【建站服务】专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-甘肃上往建站-域名申请

作者: 风兰 . 阅读量: 5 . 发表时间:2022-09-21 06:03:38

网站建设
​

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


专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-甘肃上往建站

网站建设.png

  1. =>this.tick() 是 ES6 中声明函数的一种方式,叫做箭头函数表达式,引入箭头函数有两个方面的作用:更简短的函数并且不绑定 this。

    var f = ([参数]) => 表达式(单一)// 等价于以下写法var f = function([参数]){
       return 表达式;}

    箭头函数的基本语法如下:

    (参数1, 参数2, …, 参数N) => { 函数声明 }(参数1, 参数2, …, 参数N) => 表达式(单一)//相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }// 当只有一个参数时,圆括号是可选的:(单一参数) => {函数声明}单一参数 => {函数声明}// 没有参数的函数应该写成一对圆括号。() => {函数声明}

    根据以上概念,尝试将 setInterval 中调用 tick() 的方式改为通常声明方式:

    this.timerID = setInterval(function(){
        return this.tick();
      },1000);

    但是会报错,tick() 不是一个方法。

    2、this.tick()

    this.tick() 中的 this 指代的是 function,而不是我们想要的指代所在的组件类 Clock,所以我们要想办法让 this 能被正常指代。这里我们采用围魏救赵的办法:

    let that = this;this.timerID = setInterval(function () {
      return that.tick();},1000);

    在闭包函数的外部先用 that 引用组件 Clock 中挂载组件方法 componentDidMount() 中 this 的值,然后在 setInterval 中闭包函数中使用that,that 无法找到声明,就会根据作用域链去上级(上次层)中继承 that,也就是我们引用的组件类 Clock 中的 this。

    到此为止,将 () => this.tick()等价代换为了我们熟悉的形式。
    ch4o5

       ch4o5

      don***nli619@gmail.com

       参考地址

    4年前 (2018-09-07)
  2.    曹胖子

      239***0360@qq.com

    130

    ch4o5童鞋 所列举将箭头函数用法恢复成常规写法,报错:tick() 不是一个方法的原因在于 setInterval 是 window 的方法,内闭包使用 this 当然也指向 window,window 没有 tick() 方法故报错。

    this.timerID = setInterval(function(){   //setInterval是window的方法
        return this.tick();                  //this指的是window
      },1000);

    所以需要更改指向,在 setInterval 外部定义变量,let that/_this = this,才能正常使用 _this.tick()。

    componentDidMount(){
        let _this = this;
        this.timerID = setInterval(function(){
          _this.tick();
        }, 1000);}
    曹胖子

       曹胖子

      239***0360@qq.com

    2年前 (2020-04-19)

React Props

state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变。这就是为什么有些容器组件需要定义 state 来更新和修改数据。 而子组件只能通过 props 来传递数据。


使用 Props

以下实例演示了如何在组件中使用 props:


React 实例

function HelloMessage(props) {

    return <h1>Hello {props.name}!</h1>;

}

 

const element = <HelloMessage name="Runoob"/>;

 

ReactDOM.render(

    element,

    document.getElementById('example')

);


尝试一下 »

实例中 name 属性通过 props.name 来获取。


默认 Props

你可以通过组件类的 defaultProps 属性为 props 设置默认值,实例如下:


React 实例

class HelloMessage extends React.Component {

  render() {

    return (

      <h1>Hello, {this.props.name}</h1>

    );

  }

}

 

HelloMessage.defaultProps = {

  name: 'Runoob'

};

 

const element = <HelloMessage/>;

 

ReactDOM.render(

  element,

  document.getElementById('example')

);


尝试一下 »

State 和 Props

以下实例演示了如何在应用中组合使用 state 和 props 。我们可以在父组件中设置 state, 并通过在子组件上使用 props 将其传递到子组件上。在 render 函数中, 我们设置 name 和 site 来获取父组件传递过来的数据。


React 实例

class WebSite extends React.Component {

  constructor() {

      super();

 

      this.state = {

        name: "菜鸟教程",

        site: "https://www.runoob.com"

      }

    }

  render() {

    return (

      <div>

        <Name name={this.state.name} />

        <Link site={this.state.site} />

      </div>

    );

  }

}

 

 

 

class Name extends React.Component {

  render() {

    return (

      <h1>{this.props.name}</h1>

    );

  }

}

 

class Link extends React.Component {

  render() {

    return (

      <a href={this.props.site}>

        {this.props.site}

      </a>

    );

  }

}

 

ReactDOM.render(

  <WebSite />,

  document.getElementById('example')

);


尝试一下 »

Props 验证

React.PropTypes 在 React v15.5 版本后已经移到了 prop-types 库。


<script src="https://cdn.bootcss.com/prop-types/15.6.1/prop-types.js"></script>

Props 验证使用 propTypes,它可以保证我们的应用组件被正确使用,React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效。当向 props 传入无效数据时,JavaScript 控制台会抛出警告。


以下实例创建一个 Mytitle 组件,属性 title 是必须的且是字符串,非字符串类型会自动转换为字符串 :


React 16.4 实例

var title = "菜鸟教程";

// var title = 123;

class MyTitle extends React.Component {

  render() {

    return (

      <h1>Hello, {this.props.title}</h1>

    );

  }

}

 

MyTitle.propTypes = {

  title: PropTypes.string

专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-甘肃上往建站


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

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


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设:上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务