首页 > 其他分享 >【前端】一个更底层库-React基础知识

【前端】一个更底层库-React基础知识

时间:2023-03-06 12:32:20浏览次数:28  
标签:return render createClass 基础知识 React 组件 属性 底层

leng.gif

(目录)

这一篇学习React知识点。分别从属性状态和相关API了解一下。

属性状态

属性状态要知道这几个PROPS,PROP VALIDATION,STATE。

PROPS

通过 this.props 可以获取传递给该组件的属性值,还可以 通过定义 getDefaultProps 天来指定默认属性值: 实例代码

varB=React.createClass({
getDefaultPropsO){
return {
title:'default'} ;},
renderO{
return <b>{this.props.title}</b>
}
});
React.render(<div>
<B title-"指定"/> <B title={2}/>
</div>,document.getElementById('container'));

PROP VALIDATION

通过指定 propTypes 可以校验属性值的类型:

varB=React.createClass({
propTypes:{
title: React.PropTypes.string,
},
getDefaultProps(){
return {
title:'default'};},
render(){
return <b>{this.props.title}</b>
}
});

React.render(<div>
<B title-"指定"/> <B title={2}/>
</div>,document.getElementByIdc container"));

STATE

组件内部的状态,可以使用 state:

var Timer = React.createClass({ 
getInitialstate: function() {
return {secondsElapsed: 0};初始值为0
},

tick: function() {
this.setState({secondsElapsed: this.state.secondsElapsed + 1});},
componentDidMount:function() {
this.interval = setInterval(this.tick,1000);},就会更新自己的状态
componentWillUnmount: functionO {
clearInterval(this.interval);
},

render: function(){ 
return(
<div>Seconds Elapsed: {this.state.secondsElapsed}</div>更新完之后,ui会自动同步。
);
}

});

状态变了,数据变了,UI就自动变了。

FORM

react中的form和 html 的不同点:

value/checked 属性设置后,用户输入无效textarea 的值要设置在 value 属性select 的 value 属性可以是数组,不建议使用 option 的 selected 属性input/textarea 的 onChange 用户每次输入都会触发(即使不失去焦点)radio/checkbox 点击后触发 onChange。

CONTROLLED COMPONENTS

  • 1.如果设置了 value 属性,那么改组件变为受控组件,用户无法输入,除非程序改变 value 属性:
var Test= React.createClass({

render(){

return <input value="x"/>

}

});

React.render(<Test />,document.getElementByIdc"container'));
  • 2.可以通过监听 onChange 事件结合 state 来改变 input 的值:
var Test =React.createClass({

getInitialState(){
return {
value: ‘xasdasdf’
};
},

onChange(e){

this.setState({

value:e.target.value
});},

Render(){
return 
<input value={this.state.value} onChange={this.onChange}/>
}
});

React.render(<Test />,document.getElementById('container'));
  • 3.设置 defaultValue 为设置 input 的初始值,之后 input 的值由用户输入
var Test m React.createClass({

Render(){
return <input defaultValue="xyz" />
}

});

React.render(<Test />,document.getElementByIdc'container'));

MIXIN

React中的Mixin 是一个普通对象,通过 mixin 可以在不同组件间共享。 代码实例:

var mixin = {

propTypes:{

title: React.PropTypes.string,

getDefaultProps()

return{

title: 'default’

};

},

};

var B=React.createClass({

mixins: [mixin], 

Render(){

return <b>{this.props.title}</b>

}

});

React.render(<div>

<B/> <A title={2}/>

<A/>

</div>,document.getelementByld(‘contalner'));

为了结合现有非 react 类库,通过 ref/refs 可以取得组件实例,进而取得原生节点。

COMPONENT API

React.createClass 定义组件时允许传入的配置 getDefaultProps 得到默认属性对象 propTypes 属性检验规则 mixins 组件间公用方法

COMPONENT LIFECYCLE

React.createClass 定义时允许传入的函数,会在特定生命

周期内调用

  • 1.初次创建组件时调用

getinitialState 得到初始状态对象 render 返回组件树,必须设置 componentDidMount渲染到 dom 树中是调用,只在客户端调用,可用于获取原生节点

  • 2.组件的属性值改变时调用

componentWillReceiveProps 属性改变调用 shouldComponentUpdate 判断是否需要重新渲染 render 返回组件树.必须设置 componentDidUpdate 渲染到 dom 树中是调用,可用于获取原生节点 最后是 componentWillUnmount 组件从 dom 销毁前调用

TOP API

React.createClass 创建组件类 React.findDOMNode 从组件实例获取 dom 根节点 React.render 渲染组件到 dom React.Children.*操作 map/forEach children 工具类

#总结 本章了解到了React的属性状态和相关API方法,以及代码实例,React还可以实现数据分离,评论表单、重新渲染等等功能,多上手操练就会越来越熟悉。

标签:return,render,createClass,基础知识,React,组件,属性,底层
From: https://blog.51cto.com/u_15312559/6102700

相关文章

  • PostgreSQL基础知识
    1.PostgreSQL日常命令#常用SQL查看当前用户:SELECTcurrent_user;查看所有用户:SELECT*FROMpg_user;查看所有数据库:SELECT*FROMpg_database;修改库的所有......
  • C++重载底层原理
    好吧,承认是自己浅薄了当被问起C++重载时,嘴角不自觉的微微上扬,然后脱口而出,C++重载的原则:函数名相同,函数参数列表不同(类型、个数、顺序)匹配原则1:严格匹配,找到再调用......
  • #yyds干货盘点 【React工作记录七】如何对数组进行一个过滤操作map
     目录​​前言​​​​需求​​​​解决思路​​​​代码​​​​运行结果​​前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作......
  • #yyds干货盘点 【React工作记录五】如何处理数据格式字符串让它加上标签
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • 数据挖掘(1)--基础知识学习
    前言自20世纪90年代以来,随着数据库技术应用的普及,数据挖掘( Data Mining )技术已经引起了学术界、产业界的极大关注,其主要原因是当前各个单位已经存储了超大规模,即海量规模......
  • Html基础知识-标签
    一、HTML介绍HTML是一种标记语言,不是编程语言,为了快速上手,其他的可以自己查询,下面是我使用VScode生成的第一个HTML网页。二、HTML标签介绍标签分为单标签和双标签,<br>......
  • 02 网络基础知识
    以下内容来源于B站up主“零檬信息技术”,如有侵权,请联系本人删除!传输层https使用TCP协议 默认端口为443网络层主机IP地址寻址 DNS解析数据链路层 加MAC......
  • 4.理解es6 class构造以及继承的底层实现原理
    javascript使用的是原型式继承,我们可以通过原型的特性实现类的继承,es6为我们提供了像面向对象继承一样的语法糖。1.类的实现class底层仍然是构造函数调用_classCallChe......
  • 完整手写react第三天
    实现JSX打包React项目结构:react(宿主环境无关的公用方法)react-reconciler(协调器的实现,宿主环境无关)各种宿主环境的包shared(公用辅助方法,宿主环境无关)实现jsx方法包......
  • React.memo 解决函数组件重复渲染
    为什么会存在重复渲染?react在v16.8版本引入了全新的api,叫做ReactHooks,它的使用与以往基于classcomponent的组件用法非常的不一样,不再是基于类,而是基于函数进行......