React学习笔记——交互和动态组件

学习目的:本节是学习如何使我们的组件具有交互性。

简单的例子:
class LikeButton extends React.Component { 
        constructor() { 
                super(); 
                this.state = { liked: false }; 
                this.handleClick = this.handleClick.bind(this);
         } 
         handleClick() { 
                this.setState({liked: !this.state.liked}); 
        } 
        render() { 
                const text = this.state.liked ? 'like' : 'haven\'t liked'; 
                return (
                         <div onClick={this.handleClick}>
                                 You {text} this. Click to toggle. 
                         </div>); 
        }
}
 
ReactDOM.render( 
        <LikeButton />, 
        document.getElementById('example')
 );
事件处理和合成事件(Synthetic Events)

使用react可以简单地将事件处理函数通过驼峰式命名的属性来进行传递,正如在普通的html中一阿姨给你,react保证了事件在所有的浏览器中表现一致通过它自己实现的合成事件系统。这意味着,react知道如何根据不同的(浏览器)来实现冒泡及捕获事件,并且这些事件最后传递给事件处理函数时都是一致的。

组件仅仅是状态机

react认为每个组件是一种状态机,一个组件可以有多种状态,通过渲染(render)这些状态,就可以轻易地保持ui一致。
当你更新一个组件的状态(state)时,react会根据状态值来自动渲染出一个新的ui.

state是如何工作的

通知react数据(data)改变的一个常用的方法是通过调用setState(data, callback)方法,这个方法可以将data合并到this.state然后重新渲染组件。当组件完成渲染之后,(可选的)回调函数将被调用。大部分时候不需要提供回调函数,因为react将保持你的ui可以及时被更新。

什么样的组件需要有state

你的大部分组件仅仅需要从props(属性)中国年获取到data(数据)并且渲染它。但是,有时候你需要回应用户输入、服务器请求或者是时间的变化。在这种情况下,你需要使用state。
但是原则是:尽量保持你的组件是无状态的(stateless),这样你可以将state隔离到最合乎逻辑的地方,并且可以降低冗余,同时可以简化你的应用。通常的做法是首先创造多个无状态的组件,它们仅仅需要渲染数据,然后在它们之上有一个状态组件,然后将这些状态传给子组件。这个状态组件可以包裹所有的交互逻辑,而这些无状态组件仅仅需要渲染数据。

state中需要包含什么

state需要包含一个组件时间处理函数通过改变它来触发ui更新的这些数据。在app中国年,这些数据一般都非常小并且是通过JSON序列化的。当设计一个包含状态的组件时,要考虑状态的最少表达,并且仅仅在render()函数中的this.state中存储这些属性,然后根据这些state来计算你需要的其它信息。这样可以提高你应用的正确率,因为添加或者计算一些冗余的state那么你将需要保持它们同步,这个将会让你的工作变得复杂。

state中不需要包含什么

this.state中仅仅需要包含最少的必须数据来代表你ui的状态,所以,以下的内容不需要包含在其中。

  • 计算值: 不要要预先计算给予state的值,因为你可以在render()中实现这些计算,这种方式同样可以保证你ui表现的一致性。
    比如:你有一个数组在state中,你想把它的数组长度渲染成一个string,那么你不需要预先计算出这个数组的length,仅仅需要在渲染的时候计算即可,如this.state.listItems.length + ' list items'
  • react组件: 根据组件底层的props和状态重建即可。
  • 从属性中复制的数据:尽可能地使用props,在state中存储props的一个可行应用是使你可以知道它之前的一个值是什么,因为属性会因为福组件的渲染而发生改变。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 本笔记基于React官方文档,当前React版本号为15.4.0。 1. 安装 1.1 尝试 开始之前可以先去co...
    Awey阅读 7,641评论 14 128
  • 最近看了一本关于学习方法论的书,强调了记笔记和坚持的重要性。这几天也刚好在学习React,所以我打算每天坚持一篇R...
    gaoer1938阅读 1,666评论 0 5
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,041评论 2 35
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,809评论 1 18
  • 清明佳节,捡狗小能手随公司跟团去泰国旅游,又剩我和阿柑独守空闺。2015年底,当时公司福利,鼓励员工去国外游,果断...
    爱拍照的射鸡师阅读 883评论 2 4