美文网首页
2018-01-30 一个自定义组件的流程

2018-01-30 一个自定义组件的流程

作者: NOTEBOOK2 | 来源:发表于2018-01-30 14:30 被阅读0次

业务组件调用:

  <Input 
    name="price" 
    label="Price" 
    required 
    formatter={currency.formatter} 
    getter={currency.parser} 
  />

自定义组件编写:

const Input: React.SFC<Props<any> & WithStyles> = ({
  type,
  name,
  ...
  formatter = (value: any) => value,
  parser = (value: any) => value,
}) => {
  const changeHandler = onChange
    ? ({ target: { name, value } }: React.ChangeEvent<HTMLInputElement>) => onChange(parser(value), name)
    : null
  value = value === null || value === undefined ? "" : formatter(value)
  const input = (
    <div className={classes.wrapper}>
      <input
        ref={ctrlRef}
        type={type}
        ...
        disabled={disabled || isStatic}
      />
      <div className={classes.validMsg}>{validMsg}</div>
    </div>
  )
  return label ? (
    <label className={cs(className)}>
      <div className={classes.label}>
        {label}
        {required && <span className={classes.required}>*</span>}
      </div>
      {input}
    </label>
  ) : (
    input
  )
}

transformer 方法:

export const currency = {
  formatter: (input: any) => {
    const price = parseFloat(input)
    return Number.isNaN(price) ? "" : `$${price.toFixed(1)}`
  },
  parser: (input: string) => {
    const price = input.replace("$", "")
    return parseFloat(price)
  },
}

重点:

interface Props<T = any> {
  ...
  transformer?: { formatter: (input: T) => T; parser?: (input: T) => T }
  // formatter?: (input: T) => string
  // parser?: (input: string) => T
}

相关文章

  • 2018-01-30 一个自定义组件的流程

    业务组件调用: 自定义组件编写: transformer 方法: 重点:

  • 微信小程序自定义组件Component

    自定义组件流程: 明确组件需要的属性(在ComponentA - properties中声明)如 在组件中使用声明...

  • 2020-02-10

    通过自定义事件实现子组件向父组件传递数据. 流程: *子组件通过$emit()来触发事件 *通过v-on来...

  • 面试-Android相关

    Android 基础知识 View绘制流程 Touch事件分发 自定义组件流程 动画相关 Activity生命周期...

  • vue2.0组件间传值的方法汇总

    1、组件间的传值 1.1 父组件向子组件传值 子组件自定义一个属性 父组件通过自定义属性绑定值 子组件调用自定义属...

  • 小程序的自定义组件

    小程序允许我们使用自定义组件的方式来构建页面。 自定义组件 1. 创建自定义组件 类似于页面,一个自定义组件由 j...

  • Spring Cloud zuul http请求转发原理

    spring cloud 网关,依赖于netflix 下的zuul 组件 zuul 的流程是,自定义 了ZuulS...

  • 微信小程序 之 自定义组件

    自定义组件 想要编写一个属于自己的自定义组件,建议先看看官网的介绍 以下是本人自己封装的一个自定义组件,以及理解,...

  • 发布你的组件到webcomponents.org

    beta.webcomponents.org是一个可以: 发布自己的自定义组件或组件集合 查看别人发布的自定义组件...

  • vue2中的基本操作

    一、自定义组件 1、创建组件vue 2、父级引入组件并定义运用 3、一个组件的v-for在自定义组件里,你可以像任...

网友评论

      本文标题:2018-01-30 一个自定义组件的流程

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