day03

173KB
archive
打开

需求: Tom 和Jerry两个组件都包含了水平移动的公共属性和 加速、减速的公共方法,我们利用高阶组件,把公共的属性和方法就行封装

  • 创建函数(withMove),封装相同属性和方法

  • 在函数里面创建类组件 Move,在Move里面定义公共属性: speedX,提供两个公共的方法:speedUpspeedDown

  • speedUp函数处理程序中,没点击一次,增加一次步进,然后把步进设置到 speedX里面,speedDown逻辑处理相反,因为需要一直不停的移动,所以需要在里面开启定时器

  • 然后把 speedUpspeedDown 通过组件的属性返回到需要封装的组件里面

  • 定义两个类组件 TomJerry,在这两个类组件的render方法里面定义两个按钮,和一个img,在按钮里面通过 this.props.函数名,获取到对应要处理的函数名称

  • 调用withMove,把两个需要加强的类组件传递进去,获取到封装好的类组件

  • 最后设置给父组件,渲染到UI

提供包装组件的函数

两个类组件

最后调用函数加强一下,挂载到页面

最后更新于

这有帮助吗?