react-React深入-一等公民-props-onChange
title: '[react]深入 - 一等公民 props & onChange'
date: 2017-08-23 10:05:07
tags:
- react
- reactjs
- props
- onChange
- 框架
- redux
categories: - 技术
写在前面
这篇博客的前身是 《React 新手必须知道的10件事》,结果写着写着,「每件事」都远远超过了预计的300~500字的限制。给读者的阅读造成了极大的困扰。故将《10件事》拆开成若干篇,每一篇只讲一个主题。
正文
React 最推荐的数据交互方式是:props & onChnage。在这种交互方式里:对于一个可视组件 ComponentA,用 props 来向它发送信息,而用 onChange 回调函数来接收 ComponentA 发送的·信息。在程序世界里,我们更喜欢把上述「交互方式」称为「接口」,虽然这个「接口」不是我们在面向对象语言里的 interface,但是跟 interface 有着类似的功能。 我们暂且把这个「接口规范」取名为 「props & onChange 接口规范」。
React 还是给了另外一种方法来进行数据交互:ref & method。在这种交互方式里,我们通过 <ComponentA ref={ r => this.refOfComponentA = r } 的方式来获得 ComponentA 对象的引用,然后用 this.refOfComponentA.someMethod() 来向它发送信息。我们把这交互方式称为 「ref & method 接口规范」。在典型的客户端开发环境里(iOS、Android、Windows PC等),这种方式更为常见,并且对函数调用更加友好,更「像」程序语言。但是,对于 React 新手,我们强烈不建议使用这种借口规范,除非你对 React 整个机制非常了解,仍然想用它。因为它严重破坏了 React 组件的一致性。原因有:
- React 的可视组件的层级结一般是在 jsx 文件中以一种类似于 html 的语言来表示的,这种表示方式既方便又直观,表达力很强。在这种特殊的 jsx 语言里,「props & onChange接口规范」很容易且自然的被遵守。而如果用 「ref & method接口规范」,你不得不跳转到很多行以外,才能明白信息的传递过程,既不利于代码编写,也不利于阅读。
- 我们避免不了用 props 方式来进行数据传递。我们说「避免不了」,因为很多原因,在此仅列举两个:一、jsx 文件中,Html 内置元素只能通过 props 来传递参数;二、很多第三方库(如果我们在开发一个大型项目,必定有很多「轮子」不用自己造),也必须通过 props 来传递参数。所以,props 不可避免;而同时存在两种接口规范,是没有意义且容易出错的。
- 第三个原因可能比较「经验化」。如果现在不能理解和认同,你听听就好;反正,当你使用过的优秀开源框架足够多,你肯定会明白的:当你新接触一个框架时,暂时抛弃自己以往的习惯,转而遵守它的语言规范,是最好的选择。原因很简单:
- 一个框架从出生到出名,一定有自己与众不同的框架思想,才能从其他同类型框架中脱引而出。时间的验证,是有意义的。
- 过于轻率的使用其他的编程思想,会多处碰壁;也不利于你真正了解此框架的优势和瓶颈。
react-React深入-一等公民-props-onChange的更多相关文章
- React 世界的一等公民 - 组件
猪齿鱼Choerodon平台使用 React 作为前端应用框架,对前端的展示做了一定的封装和处理,并配套提供了前端组件库Choerodon UI.结合实际业务情况,不断对组件优化设计,提高代码质量. ...
- [react] React 新手必须知道的 N 件事
尽量用 props & onChange,不要用 ref 获取引用然后调用方法.详情参考我的文章:一等公民 props & onChange React 只是一个视图框架,请尽量在 C ...
- React报错之Parameter 'props' implicitly has an 'any' type
正文从这开始~ 总览 当我们没有为函数组件或者类组件的props声明类型,或忘记为React安装类型声明文件时,会产生"Parameter 'props' implicitly has an ...
- React 深入系列3:Props 和 State
文:徐超,<React进阶之路>作者 授权发布,转载请注明作者及出处 React 深入系列3:Props 和 State React 深入系列,深入讲解了React中的重点概念.特性和模式 ...
- React组件的state和props
React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...
- React组件三大属性之 props
React组件三大属性之 props 理解1) 每个组件对象都会有props(properties的简写)属性2) 组件标签的所有属性都保存在props中 作用1) 通过标签属性从组件外向组件内传递变 ...
- JavaScript深入浅出第2课:函数是一等公民是什么意思呢?
摘要: 听起来很炫酷的一等公民是啥? <JavaScript深入浅出>系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函 ...
- React,React Native中的es5和es6写法对照
es6用在React中的写法总结: 在es6还没有完全支持到浏览器的阶段里,已经有很多技术人员开始用es6的写法来超前编程了,因为有转义es6语法的工具帮助下,大家才可大量使用.解析看看es6写法用在 ...
- React/React Native 的ES5 ES6写法对照表
//es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...
随机推荐
- 杭电-------2051Bitset(C语言)
#include<stdio.h> ] = { }; int main() { int m; ; while (~scanf("%d", &m)) { whil ...
- vscode安装使用
1.新建文件:cmd+n2.设置默认浏览器: https://blog.csdn.net/zSY_snake/article/details/83449571 3.view in browser不支持 ...
- web前后端交互,nodejs
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 web前后端交互 前后端交互可以采用混合 ...
- 计算机网络 From Mr.Liu
引言 本博客摘自Mr.Liu,原帖请点击这里. 感谢Mr.Liu,这个文章很充分的描述了计算机网络的核心知识点. 我还在学习中,所以没有进行自己的转述.图片因为是copy代码而没有获得,想看更详尽的, ...
- javascript30--day03--Css Variables
相关视频链接:https://www.bilibili.com/video/av8481988/?p=5 相关github地址:https://github.com/soyaine/JavaScri ...
- Android项目实战(五十九):调试方法神器Hugo
先上GitHub地址:Hugo 一句话描述该框架,以Log的形式告诉我们某个方法传入的每一个参数以及返回值,以及调用的activity 时间 等其他信息 非常适用方便代码调试 引入框架: 根目录下的b ...
- Android 有关在ListView RecycleView 中使用EditText Checkbox的坑
这是一篇文字超多的博客,哈哈哈,废话自行过滤··· 遇到问题 在开发中我们常会在ListView , RecycleView 列表中添加EditText输入框,或者checkbox复选框. 复选框 ...
- python——面向对象(4),单继承
"""class 类名(object<父类>)继承:子类继承父类.单继承:""" class A(object): " ...
- C#的委托案例
C#实现(Delegate)的委托就不多说了,直接上代码,看代码中的注释: namespace Delegate { delegate void DGSayiHi(string name);//声明委 ...
- 物联网开源框架Thingsboard使用总结
Thingsboard中文社区:http://thingsboard.iotschool.com/ 参考网址:https://thingsboard.io/docs/getting-started-g ...