首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React进阶(5)-分离容器组件,UI组件(无状态组件)

· 文 · 来 · 啦 · ♚ 容器组件(聪明组件) 在使用Redux中,无非就是做两件事情 如何获取store的状态(组件中通过getState方法获取),并且初始化组件的状态(在Reducer...(TodoList)中,如下所示,主要是将父组件中的render函数返回的内容,直接返回一个组件的,而子组件的渲染通过外部的props值给传进去,关注render函数的返回内容 import React...,分离出了UI组件,实际上就如下图的关系 ?...关于state状态通过容器组件来获取,然后通过props传递给UI组件,让组件更少的涉及到状态的维护,避免分散在各个组件中 结语 在React中,对于组件的职责功能划分,并没有严格的条条框框限定,这也并不是...React独有的功能,在父组件中获取状态数据,而通过自定义属性props的方式,在组件内部通过this.props或者props进行接收,这样能够减少组件的状态分散在各处的 【自我介绍】 作者:川川

96410

React进阶(5)-分离容器组件,UI组件(无状态组件)

(聪明组件) 在使用Redux中,无非就是做两件事情 如何获取store的状态(组件中通过getState方法获取),并且初始化组件的状态(在Reducer纯函数中初始化),同时还需要监听store...,让每个组件只专注的做自己的事情 例如:在我们上几节代码中的Todolist的代码中,尽管我们把数据已经抽离放到store当中进行存储了的,但是依旧有许多逻辑,组件的渲染都杂糅在一个文件当中的 如下代码所示...(TodoList)中,如下所示,主要是将父组件中的render函数返回的内容,直接返回一个组件的,而子组件的渲染通过外部的props值给传进去,关注render函数的返回内容 import React...,分离出了UI组件,实际上就如下图的关系 关于state状态通过容器组件来获取,然后通过props传递给UI组件,让组件更少的涉及到状态的维护,避免分散在各个组件中 结语 在React中,对于组件的职责功能划分...,并没有严格的条条框框限定,这也并不是React独有的功能,在父组件中获取状态数据,而通过自定义属性props的方式,在组件内部通过this.props或者props进行接收,这样能够减少组件的状态分散在各处的

1.5K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    React中的纯组件

    React中的纯组件 React提供了一种基于浅比较模式来确定是否应该重新渲染组件的类React.PureComponent,通常只需要继承React.PureComponent就可以定义一个纯组件。...如果赋予React组件相同的props和state,render()函数会渲染相同的内容,那么在某些情况下使用React.PureComponent可提高性能。...组件的区别就是React.PureComponent中以浅层对比prop和state的方式来实现了shouldComponentUpdate()函数。...仅在你的props和state较为简单时才使用React.PureComponent,或者每次更新都使用新的对象,或者在深层数据结构发生变化时调用forceUpdate()来确保组件被正确地更新,你也可以考虑使用...此外React.PureComponent中的shouldComponentUpdate()将跳过所有子组件树的prop更新,因此需要确保所有子组件也都是纯的组件。

    2.5K10

    3、React组件中的this

    React组件的this是什么 通过编写一个简单组件,并渲染出来,分别打印出自定义函数和render中的this: import React from 'react'; const STR = '被调用...JavaScript函数中的this 我们都知道JavaScript函数中的this不是在函数声明的时候定义的,而是在函数调用(即运行)的时候定义的 var student = { func:...这段代码形象的验证了,JavaScript函数中的this不是在函数声明的时候,而是在函数运行的时候定义的; 同样,React组件也遵循JavaScript的这种特性,所以组件方法的‘调用者’不同会导致...,this.handler()中的this就指向组将实例,即onClick={this.handler}打印出来的为组件实例; 总结: React组件生命周期函数中的this指向组件实例; 自定义组件方法的...this会因调用者不同而不同; 为了在组件的自定义方法中获取组件实例,需要手动绑定this到组将实例。

    2.9K10

    React 中引入 Angular 组件

    为了在我的编辑器中使用 Angular,我用 Angular 编写了一个重命名功能。而为了使用它,我得再次使用一次 customEvent,而在这个微前端架构的系统中,其事件通讯机制已经相当的复杂。...于是,我便想,不如在 React 中引入 Angular 组件吧。...React 中引入 Angular 组件 于是,便使用 create-react-app 创建了一个 DEMO,然后引入组件: 组件 在那些微前端相关的文章中,我们指出类似于 Stencil 的形式,将组件直接构建成 Web Components 形式的组件,随后在对应的诸如,如 React...return (); } } 使用它构建出来的组件,大概可以在 30kb 左右的大小。 不论是不是一个经量级的方案,但是它至少证明了组件复用的可行性。

    2.1K30

    React中的高阶组件

    HOC在React的第三方库中很常见,例如Redux的connect和Relay的createFragmentContainer。...= higherOrderComponent(WrappedComponent); 在这里要注意,不要试图以任何方式在HOC中修改组件原型,而应该使用组合的方式,通过将组件包装在容器组件中实现功能。...属性代理 例如我们可以为传入的组件增加一个存储中的id属性值,通过高阶组件我们就可以为这个组件新增一个props,当然我们也可以对在JSX中的WrappedComponent组件中props进行操作,注意不是操作传入的...WrappedComponent类,我们不应该直接修改传入的组件,而可以在组合的过程中对其操作。...注意 不要改变原始组件 不要试图在HOC中修改组件原型,或以其他方式改变它。

    3.8K10

    React 中的 dumb 组件和 smart 组件

    原文:https://medium.com/@thejasonfile/dumb-components-and-smart-components-e7b33a698d43 当你开始起步学习 React,...很快就会接触到组件(Component)的概念,正是这一概念让 React 脱颖而出。...不用时常的去关注它,在页面上放置信息后就算完事儿。 这种组件本身只有一个 render() 方法(他们也用不到其他的),并且总是表现为 Javascript 函数。...组件被定义一次后,可以在应用中被多次引用;值渲染其核心部分,组件的每个实例看起来都差不多。想要改变其外观的话,只有 props 这一个地方可以着手。简单又直观。...容器组件需要管理自身繁复的生命周期,并负责将数据作为 props,向下传递给展示型组件。 smart 组件是基于类的,并在 constructor() 函数中定义自身的 state。

    2.5K10

    在 Vue 组件中分离 UI 和业务逻辑

    原文:https://vuejs-course.com/blog/separating-ui-and-business-logic-in-vue-components 我在大型 Vue 和 React...即便不考虑测试,因为 Vue 和 React 是用来构建用户界面的而非封装应用逻辑的,所以保持二者分离也很有必要。...在本文中,我将通过重构一个由 Milad Dehghan 编写的密码强度组件来探讨分离业务逻辑和 UI 逻辑。...分离 UI 和业务逻辑 分离业务逻辑会使其非常易于达成我的一个其它目标,就是迁移到更安全的密码强度估测算法。 编写回归测试 在着手进行任何重构之前,我总是会编写一些基础的回归测试。...为了简洁起见我只处理了两种极端情况,在真实系统中应该测试所有情况。

    1.7K40

    React基础(5)-React中组件的数据-props

    构建组件,本质上就是在编写javascript函数,而组件中最重要的是数据,在React中数据分两种:props和state,当定义一个组件时,它接收任意的形参(即props),并用于返回描述页面展示内容的...每个定义的React组件应该都是独立存在的模块,组件之外的一切都是外部世界(组件),外部世界(组件)就是通过prop来和组件进行对话数据传递的 在React中,你可以将prop类似于HTML标签元素的属性...在函数声明自定义的组件中,可以通过props获取组件的属性 如下所示:自定义一个Button组件,给组件添加各个属性值,渲染的结果如下所示 [组件的props数据.png] import React,...赋值对象来初始化当前组件内部的state(状态) 在JSX中监听绑定事件处理函数(this坏境的绑定) 在constructor()函数中不要调用setState()方法,如果组件需要使用内部状态state...中,给JSX元素,监听绑定一个事件时,你需要手动的绑定this,如果你不进行手动bind的绑定,this会是undefined,在Es6中,用class类创建的React组件并不会自动的给组件绑定this

    6.7K00

    React学习(五)-React中组件的数据-props

    构建组件,本质上就是在编写javascript函数,而组件中最重要的是数据,在React中数据分两种:props和state,当定义一个组件时,它接收任意的形参(即props),并用于返回描述页面展示内容的...每个定义的React组件应该都是独立存在的模块,组件之外的一切都是外部世界(组件),外部世界(组件)就是通过prop来和组件进行对话数据传递的 在React中,你可以将prop类似于HTML标签元素的属性...(不放个妹子上来,都难以阅读到这的,哈哈) 一般而言,在React中,构造函数仅用于下面两种情况: 通过给this.state赋值对象来初始化当前组件内部的state(状态) 在JSX中监听绑定事件处理函数..." />, container); 从上面的代码中,可以看得出,父组件中JSX的prop值可以是一个方法,在子组件想要把数据传递给父组件时,需要在子组件中调用父组件的方法,从而达到了子组件向父组件传递数据的形式...这种间接操作的方式在React中非常重要.当然你看到上面把子组件与父组件放在一个文件当中,或许看得不是很舒服,你可以把子组件单独的抽离出去,通过Es6中的export,import导出导入的方式是可以的

    3.4K30

    React学习(六)-React中组件的数据-state

    ,你可以把组件看成一个'状态机",它是能够随着时间变化的数据,更多的是应当在实现交互时使用,根据状态state的改变呈现不同的UI展示 在React中,因为不能直接修改外部组件传入的prop值 当需要记录组件自身数据变化时...对象下的某个字段对应的值中,这个state可以看做是组件自身提供的一个固定的对象,用于存储当前组件自身的状态,它是私有的对象,并且完全只受控于当前组件 在以上代码中,通过给button按钮监听绑定onClick...还是state都是组件的数据,影响组件最终的UI展示,究竟怎么样进行区分,哪个组件应该拥有某个state状态,进行设置,有时候,它们是非常模糊的概念 但是在React中应该遵循一些原则: 让组件尽可能的少状态...,可以借用React内提供的setState函数进行触发,并用state来作为替代 state是当前组件的内部状态,它的作用范围只局限于当前组件,它是当前组件的一个私有变量.用于记录组件内部状态的,如果组件中的一些数据在某些时刻发生变化...结语 本文主要讲述了React组件中的数据属性-state,它是组件内部的状态,是一私有的变量,用于记录组件内部状态,由于props不可修改,通过React中内置提供setState方法修改state

    3.6K20

    React基础(6)-React中组件的数据-state

    React学习(6)-React组件中的数据-state.png 前言 组件中的state具体是什么?怎么更改state的数据? setState函数分别接收对象以及函数有什么区别?...,你可以把组件看成一个'状态机",它是能够随着时间变化的数据,更多的是应当在实现交互时使用,根据状态state的改变呈现不同的UI展示 在React中,因为不能直接修改外部组件传入的prop值 当需要记录组件自身数据变化时...state状态,进行设置,有时候,它们是非常模糊的概念 但是在React中应该遵循一些原则: 让组件尽可能的少状态 如果该组件只是用于UI渲染,数组展示,并无复杂的页面逻辑交互,那么应该让组件的数据定义成...,可以借用React内提供的setState函数进行触发,并用state来作为替代 state是当前组件的内部状态,它的作用范围只局限于当前组件,它是当前组件的一个私有变量.用于记录组件内部状态的,如果组件中的一些数据在某些时刻发生变化...React组件中的数据属性-state,它是组件内部的状态,是一私有的变量,用于记录组件内部状态,由于props不可修改,通过React中内置提供setState方法修改state的值,并且定义state

    6.1K00

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券