作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson11 转载请注明出处,保留原文链接和作者信息. 组件是相互独立.可复用的单元,一个组件可能在不同地方被用到.但是在不同的场景下对这个组件的需求可能会根据情况有所不同,例如一个点赞按钮组件,在我这里需要它显示的文本是“点赞”和“取消”,当别的同事拿过去用的时候,却需要它显示“赞”和“已赞”.如何让组件能适应不同场景下的需求,我们就要让组件具有一定的“可配置”性. React.js 的 prop…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson2 转载请注明出处,保留原文链接和作者信息. 很多课程一上来就给大家如何配置环境.怎么写 React.js 组件.但是本课程还是希望大家对问题的根源有一个更加深入的了解,其实很多的库.框架都是解决类似的问题.只有我们对这些库.框架解决的问题有深入的了解和思考以后,我们才能得心应手地使用它们,并且有新的框架出来也不会太过迷茫:因为其实它们解决都是同一个问题. 这两节课我们来探讨一下是什么样的问…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson4 转载请注明出处,保留原文链接和作者信息. 为了让代码更灵活,可以写更多的组件,我们把这种模式抽象出来,放到一个 Component 类当中: class Component { setState (state) { const oldEl = this.el this.state = state this.el = this._renderDOM() if (this.onStateCh…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson3 转载请注明出处,保留原文链接和作者信息. 看看上一节我们的代码,仔细留意一下 changeLikeText 函数,这个函数包含了 DOM 操作,现在看起来比较简单,那是因为现在只有 isLiked 一个状态.由于数据状态改变会导致需要我们去更新页面的内容,所以假想一下,如果你的组件依赖了很多状态,那么你的组件基本全部都是 DOM 操作. 一个组件的显示形态由多个状态决定的情况非常常见.代…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson24 转载请注明出处,保留原文链接和作者信息. 我们来了到了一个非常尴尬的章节,很多初学的朋友可能对这一章的知识点不屑一顾,觉得用不用对程序功能也没什么影响.但其实这一章节的知识在你构建多人协作.大型的应用程序的时候也是非常重要的,不可忽视. 都说 JavaScript 是一门灵活的语言 —— 这就是像是说“你是个好人”一样,凡事都有背后没有说出来的话.JavaScript 的灵活性体现在弱…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson22 转载请注明出处,保留原文链接和作者信息. 有一类组件,充当了容器的作用,它定义了一种外层结构形式,然后你可以往里面塞任意的内容.这种结构在实际当中非常常见,例如这种带卡片组件: 组件本身是一个不带任何内容的方形的容器,我可以在用这个组件的时候给它传入任意内容: 基于我们目前的知识储备,可以迅速写出这样的代码: class Card extends Component { render…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson20 转载请注明出处,保留原文链接和作者信息. 从之前的章节我们了解到,组件的挂载指的是将组件渲染并且构造 DOM 元素然后插入页面的过程.这是一个从无到有的过程,React.js 提供一些生命周期函数可以给我们在这个过程中做一些操作. 除了挂载阶段,还有一种“更新阶段”.说白了就是 setState 导致 React.js 重新渲染组件并且把组件的变化应用到 DOM 元素上的过程,这是一个…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson19 转载请注明出处,保留原文链接和作者信息. 这一节我们来讨论一下对于一个组件来说,constructor .componentWillMount.componentDidMount.componentWillUnmount 这几个方法在一个组件的出生到死亡的过程里面起了什么样的作用. 一般来说,所有关于组件自身的状态的初始化工作都会放在 constructor 里面去做.你会发现本书所有…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson18 转载请注明出处,保留原文链接和作者信息. 我们在讲解 JSX 的章节中提到,下面的代码: ReactDOM.render( <Header />, document.getElementById('root') ) 会编译成: ReactDOM.render( React.createElement(Header, null), document.getElementById('ro…
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson8 转载请注明出处,保留原文链接和作者信息. 继续拓展前面的例子,现在我们已经有了 Header 组件了.假设我们现在构建一个新的组件叫 Title,它专门负责显示标题.你可以在 Header 里面使用 Title组件: class Title extends Component { render () { return ( <h1>React 小书</h1> ) } } cl…