美文网首页
titleWrapper高阶组件的封装

titleWrapper高阶组件的封装

作者: 7revor | 来源:发表于2019-01-11 10:32 被阅读0次

在qap平台中,使用QN.navigator来跳转

QN.navigator.push({
      url: url,
      title: '标题',
      query: {name:'7revor'},
    });

使用这个导航进入新页面后,页面传递参数需要手动获取

import {Util} from 'nuke';
let url = Util.Location.search;
let param = QN.uri.parseQueryString(url);

并且传递的页面title只有在第一次进去的时候会显示,刷新页面后就会丢失title。
基于此种不方便的特性以及React高阶组件,简单实现了一个自动封装参数以及title的HOC

具体实现:

import {createElement, PureComponent, render} from 'rax';
import {Util} from 'nuke'
import QN from 'QAP-SDK'

/**
 * 给组件包装一层title,将QAP页面传过来的参数封装到组件的props中
 * @param title:页面标题(刷新不丢失)
 * @param component  组件原型
 */
export default function titleWrapper(title, component) {
//解析页面参数
  const param = QN.uri.parseQueryString(Util.Location.search.replace("?", ""))
//组件封装
  const Ele = _titleWrapper(title, param)(component)
  render(<Ele/>)
}

function _titleWrapper(title, param) {
  return function doTitle(WrappedComponent) {
    return class extends PureComponent {
      componentDidMount() {
        //每一次渲染页面时,都重新设置标题,防止标题丢失
        QN.navigator.setTitle({
          query: {
            title: title
          }
        });
      }
      render() { 
      //封装上一个方法得到的param到组件的props中
        return (<WrappedComponent {...param} {...this.props}/>)
      }
    }
  }
}

使用方式:

原本的React页面实现:

render(<MyComponent/>);

使用HOC之后:


import {titleWrapper} from Util
titleWrapper('我是标题', MyComponent)

这样一来,就可以在组件生命周期里使用 this.props来获取qap页面参数。

相关文章

  • titleWrapper高阶组件的封装

    在qap平台中,使用QN.navigator来跳转 使用这个导航进入新页面后,页面传递参数需要手动获取 并且传递的...

  • react hoc

    高阶函数对组件的封装,譬如多个组件大部分相同,只是需要局部变化,可通过高阶函数来进行封装处理。

  • React高阶组件

    高阶组件定义:高阶组件就是一个函数,该函数接受一个组件作为参数,并返回一个新的组件高阶组件的作用:封装并抽离组件中...

  • 初探REACT高阶组件

    简单来说,高阶组件就是一种封装行为,我们将功能相同的代码封装为一个公用函数或对象,而高阶组件就是以组件为参并返回组...

  • React(高阶组件)

    高阶组件 以组件为参数,以新组件为返回结果 高阶组件的意义 对第三方组件(我们由于不了解该组件,不愿破坏其封装性)...

  • React-Native 高阶组件

    高阶函数 高阶组件(属性代理)普通组件还可以向高阶组件传值 高阶组件(反向继承) 普通组件的 static 方法怎...

  • 17.HOC及CRA中装饰器模式

    扩展 函数式编程 HOC:高阶组件 --新demo-- 封装头部尾部为父组件 1.项目目录 2.src/layou...

  • 谈一谈我对react中组件的理解

    目录 1.什么是组件?2.有状态和无状态组件3.组件的封装和继承4.高阶组件的使用5.项目上如何合理的开发组件页面...

  • react与vue中高阶组件的对比

    由高阶函数引申出来的高阶组件 高阶组件本质上也是一个函数,并不是一个组件,且高阶组件是一个纯函数。高阶组件,顾名思...

  • React——第三阶段(1)(高阶组件、context)

    根据胡子大哈的文章学习,感谢大胡分享胡子大哈-高阶组件、context 高阶组件 什么是高阶组件 高阶组件就是一个...

网友评论

      本文标题:titleWrapper高阶组件的封装

      本文链接:https://www.haomeiwen.com/subject/bsitdqtx.html