资讯专栏INFORMATION COLUMN

React要点入门学习总结

Towers / 1095人阅读

摘要:上面代码中,通过为组件指定事件的回调函数,确保了只有等到真实发生事件之后,才会读取属性。七表单代码九要点文本输入框的值,不能用读取,而要定义一个事件的回调函数,通过读取用户输入的值。

一.JSX简介

JSX即JavaScript XML,一种在React组件内部构建标签的类XML语法。
在不使用JSX的情况下,React程序中创建DOM是这样的:

//v0.11
React.DOM.h1({className: "title"}, "Title");
//v0.12
React.createElement("h1", {className: "title"}, "Title");

如果使用JSX的方式创建节点为:

Title

JSX的特征:

JSX是一种句法变换,每一个JSX节点都对应着一个JavaScript函数

JSX即不提供也不需要运行时库

JSX并没有改变或者添加JavaScript的语义,它只是简单的函数调用。

代码一


  
    
  
  
    

要点一:在整个Html文件中,只有定义了一个id为example的div标签,当程序运行时,JavaScript代码执行,
React会创建新的DOM节点,也就是

Hello,react!


ReactDOM.render(newDom,parentDom);这个函数是用来对视图进行渲染新的节点,函数的参数主要有两个,
一个是新的节点,另一个是新节点要放在哪个父节点中。

要点二:

要点:通过在JavaScript中定义变量,可嵌入JSX中使用动态变量,使用的语法为:

Hello,{name} !

代码三


  
    
  
  
    

要点:可以通过传入节点数组的方式,直接把数组给予新的节点,

{arr}
,JSX语法会根据数组的元素动态生成对应的子节点

三.组件构造使用

React的组件化模式是最大的亮点,组件中使用props或者state,当这两个变量改变时,相应的DOM表现也会有所改变,这主要原因是一个
组件是一个状态机,对于特定的输入,他总会返回一致的输出。

代码四


  
    
  
  
    

要点一: 构造一个组件的语法使用ES6的标准进行,通过继承React.Component,使用render() {...}进行渲染对应的标签和变量输出组件

要点二: 命名新构造的组件的第一个字母需要大写!!!

要点三: 使用构造好的组件,通过使用标签,其中name是传递进去的参数,在内部用this.props.name进行
调用变量

四.组件的生命周期 (1)组件的三个生命周期状态:

1.Mounting:已插入真实 DOM

2.Updating:正在被重新渲染

3.Unmounting:已移出真实 DOM

(2)组件生命周期方法:

1.componentWillMount():改方法在完成首次渲染之前被调用。是在render方法调用前可以修改组件state的最后一次机会

2.componentDidMount():当render方法成功调用后,且DOM已经被渲染,可以在componentDidMount内部通过this.getDOMNode()方法访问到DOM节点

3.componentWillUpdate(object nextProps, object nextState):组件在收到新的props或者state进行渲染之前,这时调用该方法

4.componentDidUpdate(object prevProps, object prevState):这个方法可以让我们更新已经渲染好的DOM的机会

5.componentWillUnmount():当组件的生命结束时,这个方法就会被调用

(3)两种特殊状态的处理函数

1.componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用

2.shouldComponentUpdate(object nextProps, object nextState):组件判断是否重新渲染时调用

五.数据流 (1)Props:

通过props可以把任意类型的数据传递给组件

var tables = [{title: "React"}]

可以通过this.props.tables访问对应的属性,然绝对不能修改。一个组件绝对不可以自己修改自己的props!!!

(2)PropsTypes:

通过在组件中定义一个配置对象。组件初始化时,如果传递的属性和propsTypes不匹配,就会打印一个console.warn日志,
如果是可选的配置,就可以去掉isRequired。

代码五



  


  

要点: 示例中定义了一个组件MyTitle,其中使用propTyps对组件的属性类型进行匹配,defaultProps对组件的属性类型设置默认值。

代码六


  
    
  
  
    

要点: 通过this.props.children来获取组件的子节点

(3)State

每个React组件都可以拥有自己的state,state与props的区别在于前者只存在于组件的内部中,this.props
表示那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。state可以确定
视图的状态。

代码七



  


  

要点:组件LikeButton通过constructor构造函数进行初始化状态,this.state = {liked: false} 把liked的状态设置为false,
然后通过handleClick绑定this,当用户点击按钮时,改变liked变量的状态,这时视图也会随着一起改变。

六.DOM操作

组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它
插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后
再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高网页的性能表现。

代码八



  


  

要点:组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户
输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。需要注意的
是,由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上
面代码中,通过为组件指定 Click 事件的回调函数,确保了只有等到真实 DOM 发生 Click 事件之后,才会读取 this.refs.[refName]
属性。

七.表单 代码九



  


  

要点:文本输入框的值,不能用 this.props.value 读取,而要定义一个 onChange 事件的回调函数,通过
event.target.value 读取用户输入的值。textarea 元素、select元素、radio元素都属于这种情况

八.网络请求 代码十



  


  

要点:该实例代码使用了Fetch API来进行数据获取,Fetch API的具体如何使用在接下来的博客文章会介绍。

github仓库链接:https://github.com/lgybetter/ReactDemo

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92364.html

相关文章

  • React 可视化开发工具 Shadow Widget 非正经入门(之一:React 三宗罪)

    摘要:前言非正经入门是相对正经入门而言的。不过不要紧,正式学习仍需回到正经入门的方式。快速入门建议先学会用拼文写文档注册一个账号,把库到自己名下,然后用这个库写自己的博客,参见这份介绍。会用拼文写文章,相当于开发已入门三分之一了。 本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点,既作为用户手册的补充,也从更本质角度帮助大家理解 Shadow Widget 为什么这...

    dongxiawu 评论0 收藏0
  • 前端相关大杂烩

    摘要:希望帮助更多的前端爱好者学习。前端开发者指南作者科迪林黎,由前端大师倾情赞助。翻译最佳实践译者张捷沪江前端开发工程师当你问起有关与时,老司机们首先就会告诉你其实是个没有网络请求功能的库。 前端基础面试题(JS部分) 前端基础面试题(JS部分) 学习 React.js 比你想象的要简单 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 评论0 收藏0
  • React 可视化开发工具 Shadow Widget 非正经入门(之五:指令式界面设计)

    摘要:本篇解释中类的控制指令,与指令式界面设计相关。本专栏历史文章介绍一项让可以与抗衡的技术可视化开发工具非正经入门之一三宗罪可视化开发工具非正经入门之二分离界面设计可视化开发工具非正经入门之三双源属性与数据驱动可视化开发工具非正经入门之四 本系列博文从 Shadow Widget 作者的视角,解释该框架的设计要点。本篇解释 Shadow Widget 中类 Vue 的控制指令,与指令式界面...

    pinecone 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<