React技巧1(状态组件与无状态组件的使用)



React技巧1(状态组件与无状态组件的使用)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章!


1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04


2.React 技巧2(避免无意义的父节点)----2018.01.05


3.React 技巧3(如何优雅的渲染一个List)----2018.01.06


4.React 技巧4(如何处理List里面的Item)----2018.01.07


5.React 技巧5(TodoList实现)----2018.01.08


开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2


我们开发的时候或许会遇到这样的问题?

什么是React状态组件和无状态组件?

什么时候使用React状态组件?

什么时候使用React无状态组件?

 

我在刚学习的时候,就比较傻,不管什么情况都使用状态组件,这样当然也行,也不会出错!但是作为一名有责任心的程序猿,虽然外表屌丝,但内心还是很极客的!那我们如何优雅的书写React组件呢?

 

React状态组件?

顾名思义该组件有状态,有状态就有对应的UI 变化!

如果你的UI 不需要变化,请不要使用 状态组件!

 

如下就是典型的官方提供的一个状态组件

React技巧1(状态组件与无状态组件的使用)

因为这是一个计数器,他是不断增长变化的,只要UI变化,那么就需要用到状态组件!

 

React无状态组件?

那么什么时候用无状态组件呢?

就是组件本身不需要负责UI变化,不包括子组件

回过头看我们之前的Index.jsx,Shop.jsx

React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

 

可能新手一开始,困难的地方就是在于如何规划组件,怎么写?

这就需要你多写,慢慢去理解!送大家一句话,React:万物皆组件!

只要你的代码,相同的地方出现两次,我觉得你就要考虑把他做成组件,因为这样做不但好维护,也节省代码量!


如果遇到这种情况,如何组织

React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

有三段一样的代码?

按照设计原则,我们需要把他做成组件!

React技巧1(状态组件与无状态组件的使用)

我们可以这样做,但这样做不是最好的!我们改造下!

我们新建 SecondsBottom.jsx 无状态组件

import React from 'react';

const SecondsBottom = ({seconds}) =>
<div className="bottom">
       Seconds: {seconds}
</div>
;

export default SecondsBottom;

React技巧1(状态组件与无状态组件的使用)

修改 Seconds.jsx 写法

render() {
let state = this.state;
   return (
<div className="cont">
           <div className="top">
               <i className="bd_logo1"/>
               这是{this.props.title}
</div>
           {/*这里我写了三中传值方法*/}
<SecondsBottom seconds={this.state.seconds}/>
           <SecondsBottom seconds={state.seconds}/>
           <SecondsBottom {...state}/>
       </div>
   );
}

React技巧1(状态组件与无状态组件的使用)

如果你需要在无状态组件里写一些逻辑判断呢?

比如:seconds小于等于5 显示一种样式,大于5 又显示另一种样式

import React from 'react';

const SecondsBottom = ({seconds}) => {
if (seconds < 5) {
return (
<div className="bottom">
               小于5的Seconds: {seconds}
</div>
       )
} else {
return (
<div className="bottom">
               大于5的Seconds: {seconds}
</div>
       )
}
};

export default SecondsBottom;


React技巧1(状态组件与无状态组件的使用)

当然你页可以用三元表达式来写!

import React from 'react';

const SecondsBottom = ({seconds}) =>
<div className="bottom">
       {seconds <= 5 ? "小于等于5的" : " 大于5"}的Seconds: {seconds}
</div>
;
export default SecondsBottom;


React技巧1(状态组件与无状态组件的使用)

最终效果!!!!

React技巧1(状态组件与无状态组件的使用)


React技巧1(状态组件与无状态组件的使用)


本文完 React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

禁止擅自转载,如需转载请在公众号中留言联系我们!

感谢童鞋们支持!

如果你有什么问题,可以在下方留言给我们!



React技巧1(状态组件与无状态组件的使用)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章!


1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04


2.React 技巧2(避免无意义的父节点)----2018.01.05


3.React 技巧3(如何优雅的渲染一个List)----2018.01.06


4.React 技巧4(如何处理List里面的Item)----2018.01.07


5.React 技巧5(TodoList实现)----2018.01.08


开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2


我们开发的时候或许会遇到这样的问题?

什么是React状态组件和无状态组件?

什么时候使用React状态组件?

什么时候使用React无状态组件?

 

我在刚学习的时候,就比较傻,不管什么情况都使用状态组件,这样当然也行,也不会出错!但是作为一名有责任心的程序猿,虽然外表屌丝,但内心还是很极客的!那我们如何优雅的书写React组件呢?

 

React状态组件?

顾名思义该组件有状态,有状态就有对应的UI 变化!

如果你的UI 不需要变化,请不要使用 状态组件!

 

如下就是典型的官方提供的一个状态组件

React技巧1(状态组件与无状态组件的使用)

因为这是一个计数器,他是不断增长变化的,只要UI变化,那么就需要用到状态组件!

 

React无状态组件?

那么什么时候用无状态组件呢?

就是组件本身不需要负责UI变化,不包括子组件

回过头看我们之前的Index.jsx,Shop.jsx

React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

 

可能新手一开始,困难的地方就是在于如何规划组件,怎么写?

这就需要你多写,慢慢去理解!送大家一句话,React:万物皆组件!

只要你的代码,相同的地方出现两次,我觉得你就要考虑把他做成组件,因为这样做不但好维护,也节省代码量!


如果遇到这种情况,如何组织

React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

有三段一样的代码?

按照设计原则,我们需要把他做成组件!

React技巧1(状态组件与无状态组件的使用)

我们可以这样做,但这样做不是最好的!我们改造下!

我们新建 SecondsBottom.jsx 无状态组件

import React from 'react';

const SecondsBottom = ({seconds}) =>
<div className="bottom">
       Seconds: {seconds}
</div>
;

export default SecondsBottom;

React技巧1(状态组件与无状态组件的使用)

修改 Seconds.jsx 写法

render() {
let state = this.state;
   return (
<div className="cont">
           <div className="top">
               <i className="bd_logo1"/>
               这是{this.props.title}
</div>
           {/*这里我写了三中传值方法*/}
<SecondsBottom seconds={this.state.seconds}/>
           <SecondsBottom seconds={state.seconds}/>
           <SecondsBottom {...state}/>
       </div>
   );
}

React技巧1(状态组件与无状态组件的使用)

如果你需要在无状态组件里写一些逻辑判断呢?

比如:seconds小于等于5 显示一种样式,大于5 又显示另一种样式

import React from 'react';

const SecondsBottom = ({seconds}) => {
if (seconds < 5) {
return (
<div className="bottom">
               小于5的Seconds: {seconds}
</div>
       )
} else {
return (
<div className="bottom">
               大于5的Seconds: {seconds}
</div>
       )
}
};

export default SecondsBottom;


React技巧1(状态组件与无状态组件的使用)

当然你页可以用三元表达式来写!

import React from 'react';

const SecondsBottom = ({seconds}) =>
<div className="bottom">
       {seconds <= 5 ? "小于等于5的" : " 大于5"}的Seconds: {seconds}
</div>
;
export default SecondsBottom;


React技巧1(状态组件与无状态组件的使用)

最终效果!!!!

React技巧1(状态组件与无状态组件的使用)


React技巧1(状态组件与无状态组件的使用)


本文完 React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)React技巧1(状态组件与无状态组件的使用)

React技巧1(状态组件与无状态组件的使用)

禁止擅自转载,如需转载请在公众号中留言联系我们!

感谢童鞋们支持!

如果你有什么问题,可以在下方留言给我们!


相关文章: