React创建组件的三种方式
使用函数式创建
import {render} from 'react-dom';
function Hello(props){
return (<div>{props.name}</div>)
}
render(<Hello name='yf' />,document.getElementById('root'))
使用React.createClass方式创建
import React from 'react';
import {render} from 'react-dom';
const Hello = React.createClass({
getInitialState:function(){
return {text:this.props.initialValue || 'placeholder'}
},
render:function(){
return (<div>
<input type='text' value={this.state.text} />
</div>)
}
})
render(<Hello initialValue='aaa' />,document.getElementById('root'))
使用React.Component创建
为了更好的实现复用,React极力推荐使用React.Component创建组件来取代React.createClass方法创建。是以ES6的形式来创建react的组件的
import React from 'react';
import {render} from 'react-dom';
class Hello extends React.Component{
constructor(props){
super(props);
this.state ={
text:this.props.initalValue || 'placeholder'
}
}
render(){
return (<div>
<input type='text' value={this.state.text} />
</div>)
}
}
render(<Hello initalValue = 'aaa' />,document.getElementById('root'))
JSX语法
const Hello = ()=>{
return (<div>
<p>这是一个段落</p>
</div>)
}
而这种JSX语法最终会被转换为React.createClass的方式被调用
const Hello = React.createClass({
render(){
return (<div>
<p>这是一个段落</p>
</div>)
}
})
//向下和解(Top-Down Reconciliation)
//最终转换的形式为DOM element形式
const Hello = ()=>({
type:'div',
props:{
children:{
type:'p',
children:'这是一个段落'
}
}
})
const Hello = React.createClass({
type:'div',
props:{
children:{
type:'p',
children:'这是一个段落'
}
}
})
作者:yolanda_筱筱
链接:https://juejin.cn/post/6844903743587106824
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-11-25 android textview空格占位符以及一些其他占位符汇总
2015-11-25 使用Swift的代理,闭包来封装一个公用协议减少垃圾代码
2015-11-25 Objective-C中的block块语法
2015-11-25 Swift利用闭包(closure)来实现传值-->前后两个控制器的反向传值
2015-11-25 Swift语言iOS8的蓝牙Bluetooth解析
2015-11-25 iOS-BLE蓝牙开发
2015-11-25 iOS开发-object-c之 @[], @{}