React基础(一):6个简单 demo 轻松学会 React 开发模式(四)

声明: React基础(一)的内容来自腾讯课堂 Web前端【红点工场】的视频,原作者是 Skipper 老师。

接下来的 Demo 6,我们会考虑一个新的东西:进行一个组件化的包装。

就是把按钮当做一个组件,然后在我们需要使用的时候,不断的复用就可以了,并且也是纯粹的 JS。

Demo 6:

那么在写这个 Demo 之前,我们先思考一下,

我们之前,无论是写表单,还是按钮,它们都会有一些共同点,

比如它们都会有:state,setState 方法,render 方法,

还会有一个控制的方法,比如 handleClick 方法。

那么既然它们每一个都有这些东西,我们是不是能把它们提取成一个对象呢?

接下来,我们就来试一下:

我们可以看到,刚开始页面是空白的,

当我们在控制台上 new Button() 的时候,

首先,它会构建一个 state --> this.state = { ... },

然后它会根据 state 来渲染这个页面 --> this.render(),

最终就会把整个模版字符串,填充到 id = "root" 的这个标签里面去,

这时候,我们就有了一个点赞按钮了,并且是根据它自己的 state 来渲染。

那么,这么写的好处是什么呢?

先别急,我们再写一个 title 的组件:

那么完成 title 组件之后,我们发现,两个组件之间会有一个冲突问题:

因为 root 标签只有一个,所以组件也只能有一个,要么是 button,要么是 title。

那么我们是不是应该思考一下,我们设定组件的目的是什么?

是不是,我们只要实例化,new 一个,就生成一个组件,

如果想复用,new 多少次,就有多少个组件,

那么我们就不能直接赋值给 root.innerHTML 了,

我们可以换一种模式,当我们调用 render() 函数的时候,直接 return 一个字符串出来。

那么,我们可以先去掉 constructor 和 setState 里面的 this.render() 方法调用:

那么为什么要这么做呢,它的好处又是什么呢?

别急,我们继续往下看,

首先我们构造一个容器 Wrap,那么每次我们都可以在 Wrap 里面不断的去复用我们定义的组件:

可以看到,现在我们是不是可以不断的复用某个类了。

我们把一个组件写好之后,只要在别的组件里面引用它,就可以不断的去构建新的组件,

用小组件,组合成大组件,再用大组件,组合成更大的组件,最终,构成一整个网页。

我们的组件可以反复的用在别的地方,这个就是组件式开发的思想。

那么,我们是否发现一个问题:

我们的每一个组件,都需要写一个 setState 方法?

那么我们可以是不是可以把这个方法提取出来,放到父类 Component 里面,以供它们继承使用呢?

那么我们的每一个组件,以后就都可以不用写 setState 方法了,

我们只需要 extends Component 就可以了:

可以看到,页面同样渲染出来了,

并且在右边的控制台上,button.setState 是有值的,并且它是一个方法,

下面也可以清楚的看到,setState 这个方法,它是继承自 Component 的。

其实在 React 里面,就有给我们提供一个类,就叫做 Component,

我们在写任何组件的时候,都需要用 extends 去继承它,才能够使用。

那么,我们明白了:

Component 提供了一个基础,把一些,每个组件都要用的东西,都放在这里,

那么你要写一个新组件的时候,只需要去 extends 继承一下,

再去实现你想要的功能就可以了。

到此,我们是不是已经了解了 React 的一些基本模式呢?

发布了61 篇原创文章 · 获赞 3 · 访问量 4376

猜你喜欢

转载自blog.csdn.net/weixin_43921436/article/details/103017502