简单易懂的React魔法(12):State和单一数据源原则

在我们进一步讨论之前,有个重要的理论你需要注意。别担心,我会长话短说。

当你开始的时候,可能认为让一个组件拥有state是一件好事,毕竟它将功能和相关数据保存在一个对象中,对吧。

确实,通过这种方式来使组件之间相互独立是很有用的方法,可以将大型应用程序分解成更小的部分,但同时也会将程序变得非常复杂。这些数据存在哪里?它是冗余的么?如果它是冗余的,如何保证当数据变化时所有的数据都会更新?当你的应用像是整个facebook那么大的时候,他们有超过10000个react组件。这会产生极大的混乱。

经验丰富的react开发人员的解决方式是,遵从单一数据源原则。你的所有组件应该有一个主状态,然后将这个状态以props的形式传给子组件。

使用这种技术,当主状态的任何一部分发生改变,它会自动更新以这部分为props的子组件,这种变化将会从上到下到达子组件,这是同步方法,不会重复。

在完美的react组件中,很少有组件有state,所以react有一个特殊的语法来创建一种只有render()方法的组件,它们不含有任何state,它们只是接受一个props然后渲染它。下面给出一个简单的例子:

const FunctionalTest = (props) => {
    return {props.message};
};

一旦你保存它,就可以像其他组件一样使用它。

<FunctionalTest message="Hello from a functional component!" />

别强迫自己逃避使用state,要成为一个务实的程序员,该用的时候就用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • GUIDS 第一章 为什么使用React? React 一个提供了用户接口的JavaScript库。 诞生于Fac...
    jplyue阅读 8,987评论 1 11
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 7,881评论 1 18
  • 最近看了一本关于学习方法论的书,强调了记笔记和坚持的重要性。这几天也刚好在学习React,所以我打算每天坚持一篇R...
    gaoer1938阅读 5,703评论 0 5
  • 亲爱的家人们,大家晚上好!我是第二期特种兵三班的冰雨,地道的河南妹子,二个孩子的宝妈,从学校毕业以后一直从事基层工...
    冰雨_2bd4阅读 1,283评论 0 0
  • 作为非跑步爱好者,这本书在kindle里躺了一年以上,才被翻了出来。本书不长,看得很仔细,也就两天看完了。 这本书...
    人在旅途_Amber阅读 3,207评论 1 4

友情链接更多精彩内容