react入门
react入门
1. react要解决的问题
降低页面从服务器和用户输入得到数据,来展示页面的过程的复杂性。
2. react中CSS的写法
1. css类选择器的写法: 以前是class,现在要改成className,原因是和ES6的javascript语法冲突,ES6可以用class类定义类
<style>
.alert-text{
color:red;
}
</style>
<script type="text/jsx">
var Hello = React.createClass({
render:function() {
return <div className="alert-text">Hello {this.props.name} </div>;
//{xxx}表示执行javascript表达式xxx
}
});
React.render(<Hello name="World")/>,document.getElementById('container'));
</script>
2. 内联样式的写法:styleObj的方法 ,并赋值给相应的组件属性
style="color:red"
//在组件的属性里这样会报错,
//不再使用字符串的方式,而是使用对象,对象的每个键用驼峰命名
styleObje = {
color:"red",
fontSize:"44px"
};
var Hello = React.createClass({
render:function() {
return <div style ={styleObj} >Hello {this.props.name} </div>;
//{xxx}表示执行javascript表达式xxx
}
});
3. react的生命周期
- 生命周期图
状态说明:
- Mounted:React Components被render解析生成相应的DOM节点,并被插入浏览器的DOM结构的一个过程。通俗的说就是能看到相应的节点时,就是Mounted完成了
- Update: 一个mounted的Component被重新render的过程,只有state确实发生改变且影响到了DOM结构的时候,才重新渲染
- Unmount: 一个mounted的Componet对应的DOM结构被从DOM结构中移除的过程。
- hook说明图:上图的每一个状态,都添加了相应的hook函数,详见下图
props和state的对比、相关性
- 对比:props是有父组件传递给子组件的,一般认为给定了之后,不怎么发生变化;而state是组件私有的
- 相关性:componentWillReceiveProps接收到props之后,可以对比之前的props,决定是否更新组件的state
4. react的事件绑定
命名方式:(类似onClick的驼峰命名,区别于原生html的全小写) 用props的方式存自身函数
1. 回调函数中:获取到子组件的DOM(需要使用ref属性),操作DOM
var TestClickComponent = React.createClas({
handleClicik:function(e){
var tipE = React.findDOMNode(this.refs.tip);
if(tipE.style.display === "none"){
tipE.style.display ="inline";
}else{
tipE.style.display ="none";
}
e.stopPropagation();
e.preventDefault();
}
render:function(){
return (
<div>
<button onClick={this.}>显示|隐藏</button> <span ref="tip">测试点击</span>
</div>
);
}
});
- 回调函数中:更新state,引起相应重绘
var TestInputComponent = React.createClass({ getInitialState:function() { return { inputContent:'' }; }, changeHandler:function(e){ this.setState({ inputContent:e.target.value }); e.preventDefault(); e.stopPropagation(); } render:function(){ return ( <div> <input type="text" onChange={this.changeHandler}/><span>{this.state.inputContent}</span> </div> ); } });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?