博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ReactJS基础(续)
阅读量:4692 次
发布时间:2019-06-09

本文共 2569 字,大约阅读时间需要 8 分钟。

前边的ReactJS基础,我们可以了解到,对于React,可以说是万物皆组件

React的组件应该具有 可组合(Composeable)可重用(Reusable)可维护(Maintainable)的特征,所以我们尽量将组件最小化,写的尽可能的小

前边已经介绍了组件的写法,下面我们来进一步了解一下组件的属性、状态、生命周期和嵌套

组件的属性

我们来编写一个组件SayHello,有一个name属性,然后输出hello + name的值,代码如下:

 

var SayHello = React.createClass({    render:function(){        return 

hello {this.props.name}

}});ReactDOM.render(
, document.getElementById('great'))

 结果

有些细节需要注意:

1.创建的组件名称首字母必须大写。 2.
与 document.getElementById('great')之间用的是逗号分隔

   3.获取属性的值用的是 this.props.属性名

   4.组件的style属性的设置方式也值得注意,要写成style={

{width:“”100"}}这种形式

 组件的状态

组件免不了要与用户互动,React 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI 。我们来看代码

var Counter = React.createClass({  getInitialState: function () {    return { clickCount: 0 };  },  handleClick: function () {    this.setState(function(state) {      return {clickCount: state.clickCount + 1};    });  },  render: function () {    return (

点我!点击次数为: {this.state.clickCount}

); }});

上面代码实现的是点击h2,显示点击次数,效果如图所示

需要注意是的是

1.getInitialState函数必须有返回值,可以是NULL或者一个对象。

2.访问state的方法是this.state.属性名。

3.变量用 { }包裹,不需要再加双引号。

组件的嵌套

前边我们说了,组件要有复用的特点,线面来看一下如何复用

来看下边的代码

var Form= React.createClass({    render:function(){        return 
{this.props.inputName}:
}});var Iname= React.createClass({ render : function(){ return

欢迎

}});ReactDOM.render(
, document.getElementById('sub'))

这里我们创建了一个Form组件,然后又创建了一个Iname组件,然后我们在Inmae组件中调用Form组件两次,这里我们通过属性inputName传入值

 

 组件生命周期

 

组件的生命周期可分成三个状态:

  • Mounting:已插入真实 DOM
  • Updating:正在被重新渲染
  • Unmounting:已移出真实 DOM

生命周期的方法有:

componentWillMount 在渲染前调用,在客户端也在服务端。

componentDidMount : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。 如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout, setInterval或者发送AJAX请求等操作(防止异部操作阻塞UI)。

componentWillReceiveProps 在组件接收到一个新的prop时被调用。这个方法在初始化render时不会被调用。

shouldComponentUpdate 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 

可以在你确认不需要更新组件时使用。

componentWillUpdate在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用。

componentDidUpdate 在组件完成更新后立即调用。在初始化时不会被调用。

componentWillUnmount在组件从 DOM 中移除的时候立刻被调用。

这些就跟PHP中的一些魔术方法一样,满足条件自动调用,

下面以componentDidMount方法为例,

var Hello = React.createClass({  getInitialState: function () {    return {      color: "red"    };  },   componentDidMount: function () {            alert("111");    },   render: function () {    return (      
Hello {this.props.name}
); }});

转载于:https://www.cnblogs.com/jinguanzhang/p/7107767.html

你可能感兴趣的文章
二重循环
查看>>
对于软件工程的期待
查看>>
C++初识
查看>>
xml读取
查看>>
Linux编程环境
查看>>
说说final关键字(好像有干货)
查看>>
ps 常用快捷键
查看>>
算术基本定理
查看>>
HDU 1629 迷宫城堡
查看>>
codeforces 390C Inna and Candy Boxes
查看>>
JNDI是什么
查看>>
Oracle用户被锁定解决方法
查看>>
jsoup Java HTML解析器:使用选择器语法来查找元素
查看>>
ThreadPoolExecutor源码解读
查看>>
thinkphp 中英文网站详解
查看>>
hdu_5963_朋友(找规律)
查看>>
时间戳与时间之间的相互转化
查看>>
Z.XML-Cocos2d-x开发笔记
查看>>
Sublime Text 报“Pylinter could not automatically determined the path to lint.py.
查看>>
jQuery基本概念
查看>>