热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

react-native初步接触要点总结

写在前面的话,要用好react-native,必须要先了解es6和jsx,之后再开始react-native之旅目前用react-native已经有一个星期了,记录其中一些要点1、p

写在前面的话,要用好react-native,必须要先了解es6 和 jsx,之后再开始react-native之旅

目前用react-native已经有一个星期了,记录其中一些要点

1、props是只读的,唯一的修改时机为父渲染的时候,将新的props传递给子

2、定义自己的props的时候使用defaultProps才能指定默认值

3、定义自己的props的时候最好使用propTypes进行校验

4、state的更改将导致重新渲染

5、由于state的改变将导致重新渲染,因此在render中不能修改state,如果需要修改,一定是设计的问题

6、由于state的改变将导致重新渲染,因此了解控件的生命周期对于安全的改变state是十分重要的,控件的生命周期如下:


注:该图片来源于https://www.race604.com/react-native-component-lifecycle这篇文章

可以看出来,安全更新state的hook有componentWillMount,componentDidMount,

componentWillReceiveProps,shouldComponentUpdate

7、几个hook的常见应用场景

 a、componentWillMount:进入界面后进行一些初始化操作,比如表单通过服务器获取默认值。

 b、componentDidMount:进入界面后初始化或者调用一些其他框架,因为此时真实的dom已经创建。

 c、componentWillReceiveProps:渲染控件的时候,通过属性的变化修改state。      

 d、shouldComponentUpdate:父子通信,或者ref通信的时候,过滤不需要渲染的情况。也可以修改state。

e、componentWillUpdate:用来处理每次更新前需要做的事情,不能修改state。

 8、控件之间的通信

  a、利用父子及回调完成通信

 如果子需要向父通信,需要在子中定义一个回调函数,放在props中。整体思路如下


  b、通过ref进行通信

  使用this.refs.相应的控件ref属性值,即可取得相应的控件,进而可以调用setState,或者拿到props和state。

 两者的比较:

 最后举个例子说明一下为什么可能不被调用。假设父组件通过点击事件,重新渲染,同时改变子的props。

然而子是一个list,它的数量是不定的。比如一开始进入页面,list中有一个item,这个时候该item组件调用

componentWillMount和componentDidMount钩子函数。通过点击事件,假如这个时候list有三个item。那么第一个item

会走componentWillReceiveProps、shouldComponentUpdate、componentWillUpdate这组钩子函数。其他两个item

则是走componentWillMount和componentDidMount钩子函数。

也就是,父子通过props通信时,如果之前子有dom了,那么就走componentWillReceiveProps、

shouldComponentUpdate、componentWillUpdate这组钩子函数。否则走componentWillMount、

componentDidMount钩子函数。

这一点一定要注意。

  通过以上总结,可以灵活的处理任何交互。如果存在奇怪的现象,一定是思路不正确,而且没有理解透以上内容。











推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • 腾讯T3大牛亲自教你!2021大厂Android面试经验,经典好文
    本篇将由环境搭建、实现原理、编程开发、插件开发、编译运行、性能稳定、发展未来等七个方面,对当前的ReactNative和Flutter进行全面的分析对比, ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • 前言作为一个移动端初学者、爱好者,能使用前端技术开发原生游戏一直是一件渴望而不可及的事情,暂且不说游戏逻辑的复杂度,算法的健壮性ÿ ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
author-avatar
不懂珍惜的林记热_713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有