JS每日一题:react中类组件和函数式组件中有什么不同?
栏目: JavaScript · 发布时间: 6年前
内容简介:react中类组件和函数式组件中有什么不同?在react中创建组件的形式有三种今天我们要聊的是纯函数式定义的无状态组件及类组件的到底有什么不同, 分别在什么场景下适合使用
20190306期
react中类组件和函数式组件中有什么不同?
在react中创建组件的形式有三种
- 纯函数式定义的无状态组件
- React.createClass 定义的组件
- Extends React.Component 定义的组件
今天我们要聊的是纯函数式定义的无状态组件及类组件的到底有什么不同, 分别在什么场景下适合使用
首先我们来看一下用上述方法如何来创建一个组件
Extends React.Component 定义的组件
React.Component是以ES6的形式来创建react的组件的,是React目前极为推荐的创建有状态组件的方式,最终会取代React.createClass形式
class Demo extends React.Component {
constructor(props) {
super(props);
this.state = {
text: props.initialValue || 'placeholder'
};
// 手动绑定this
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({
text: event.target.value
});
}
render() {
return (
<div>
<input value={this.state.text} onChange={this.handleChange}/>
</div>
);
}
}
Demo.propTypes = {
initialValue: React.PropTypes.string
}
纯函数式定义的无状态组件
纯函数组件的特点:
- 组件不会被实例化,整体渲染性能得到提升
- 组件不能访问this对象
- 组件无法访问生命周期的方法
- 无状态组件只能访问输入的props,无副作用
function DemoComponent(props) {
return <div>Hello {props.name}</div>
}
ReactDOM.render(<DemoComponent name="JS每日一题" />, mountNode)
使用场景
以类形式创建的组件不用多说,该怎么用还怎么用, 这里说一纯函数组件, 纯函数组件被鼓励在大型项目中尽可能以简单的写法来分割原本庞大的组件,未来React也会这种面向无状态组件在譬如无意义的检查和内存分配领域进行一系列优化,所以只要有可能,尽量使用无状态组件
总结
- react中有三种创建组件的形式
- 纯函数不会被实例化,不能访问this,没有生命周期
- 尽可能的使用纯函数拆分复杂型组件
关于JS每日一题
JS每日一题可以看成是一个语音答题社区
每天利用碎片时间采用60秒内的语音形式来完成当天的考题
群主在次日0点推送当天的参考答案
- 注 绝不仅限于完成当天任务,更多是查漏补缺,学习群内其它同学优秀的答题思路
以上所述就是小编给大家介绍的《JS每日一题:react中类组件和函数式组件中有什么不同?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- React Hooks 源码解析(一):类组件、函数组件、纯组件
- react怎么知道是类组件还是函数组件
- 「React」函数组件于Class组件有何不同?
- 前端Vue:函数式组件
- React 是如果分辨函数式组件和类组件的?
- Vue 组件生命周期钩子函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pattern Recognition and Machine Learning
Christopher Bishop / Springer / 2007-10-1 / USD 94.95
The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!