Home

Awesome

react-values@0.1.0 translate-svg

react-values为您提供一组简单,可组合的帮助程序,使您可以构建更复杂,有状态的UI组件,如切换,下拉列表,列表,复选框组,弹出窗口,工具提示,您可以命名它! 」

toggles, dropdowns, lists, checkbox groups, popovers, tooltips

校对 ✅

<!-- doc-templite START generated --> <!-- time = '2018 7.11' --> <!-- repo = 'ianstormtaylor/react-values' --> <!-- commit = '38a3650dcc1719fdb23cdb7f844273804526a374' -->
翻译的原文与日期最新更新更多
commit⏰ 2018 7.11last中文翻译
<!-- doc-templite END generated -->

贡献

欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看

生活

If help, buy me coffee —— 营养跟不上了,给我来瓶营养快线吧! 💰


<!-- START doctoc --> <!-- END doctoc --> <p align="center"> <a href="#"><img src="./docs/images/banner.png" /></a> </p> <p align="center"> 一个<em>小小的</em>集合 关于, React 组合 components <br/> 控制 <b>状态{state}</b> 来 影响 <b>渲染{render}</b>的 <b>道具{props}</b>. </p> <br/> <p align="center"> <a href="#%E4%B8%BA%E4%BB%80%E4%B9%88"><strong>为啥?</strong></a> · <a href="#%E5%8E%9F%E7%90%86"><strong>原理</strong></a> · <a href="#%E4%BE%8B%E5%AD%90"><strong>示例</strong></a> · <a href="#%E6%96%87%E6%A1%A3"><strong>文档</strong></a> · <a href="#%E5%B8%AE%E5%BF%99"><strong>帮忙!</strong></a> </p> <br/> <p align="center"> <a href="https://www.npmjs.com/package/react-values"> <img src="https://img.shields.io/npm/dt/react-values.svg?maxAge=3600"> </a> <a href="https://unpkg.com/react-values/dist/react-values.min.js"> <img src="https://img.badgesize.io/https://unpkg.com/react-values/dist/react-values.min.js?compression=gzip&amp;label=react--values"> </a> <a href="https://travis-ci.org/ianstormtaylor/react-values"> <img src="https://travis-ci.org/ianstormtaylor/react-values.svg?branch=master"> </a> <a href="./packages/react-values/package.json"> <img src="https://img.shields.io/npm/v/react-values.svg?maxAge=3600&label=react-values&colorB=007ec6"> </a> <a href="./License.md"> <img src="https://img.shields.io/npm/l/react-values.svg?maxAge=3600"> </a> </p> <br/> <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

react-values为您提供一组简单,可组合的帮助程序,使您可以构建更复杂,有状态的UI组件,如

它使用基于render-prop的 小API 来实现这一点,它提供了有用的转换toggle,increment,filter等等,取决于值的类型,所有都基于 JavaScripts 原生值类型...

这样可以避免您不断重写 相同的状态 管理逻辑,这样您就可以将组件集中在 行为表示 上.

例如,这是一个<Toggle>的实现,通过使用<BooleanValue>了了几行就搞定:

import { BooleanValue } from 'react-values'

const Toggle = ({ value, defaultValue, onChange }) => (
  <BooleanValue value={value} defaultValue={defaultValue} onChange={onChange}>
    {({ value: on, toggle }) => (
      <Track on={on} onClick={toggle}>
        <Thumb on={on} />
      </Track>
    )}
  </BooleanValue>
)

const Track = styled.div`
  position: relative;
  height: 25px;
  width: 50px;
  background-color: ${props => (props.on ? 'lightgreen' : 'lightgray')};
  border-radius: 50px;
`

const Thumb = styled.div`
  position: absolute;
  left: ${props => (props.on ? '25px' : '0')};
  height: 25px;
  width: 25px;
  background-color: white;
  border-radius: 50px;
`
<br/>

为什么?

在使用 React 构建应用程序时,您最终会在此过程中构建大量有状态组件. 无论哪个级别的 UI组件,都会有,如 切换,工具提示,复选框组,下拉列表 等,还是在 应用程序级别的组件模态框,弹出窗口,排序,过滤 等.

在此过程中,无论是否使用this.setState,你最终都会重新实现 折磨般的状态的处理逻辑的运行 - 或者通过一遍又一遍地构建相同的行为创建者. 还有可能为了使您的组件 在 您的应用程序中可以很好地重用,您会使用value要么defaultValue来增强处理"受控"和"不受控制"的使用.

为了使事情更容易管理,你重新发明了常见的转换函数open,close,toggle,increment,decrement等等,在许多不同的组件. 如果您正在与团队合作,那么您最终会在 整个代码库 中以 不同的方式 完成所有这些一样工作.

最后,您现在 维护的逻辑 比 必要的 多得多,在许多不同的地方仅仅是略微不同方式的复制. 您的应用程序包的大小越来越大.

react-values用一些原则解决所有的这些......

<br/>

原理

  1. 利用渲染道具{render props}. 它使用基于render-prop的API,通过灵活的function-as-children模式向您展示 其状态 和 一些 方便的转换函数.

  2. 遵循React的惯例. 它的组件遵循 React 自己的命名约定,使用熟悉的概念value/defaultValue. 这使得插入现有代码库或框架非常容易.

  3. 遵循JavaScript的约定. 它暴露了JavaScript熟悉的内置方法,如setDate/setHours,push/pop,filter,concat等,以避免重新发明轮子,并强迫您不断阅读文档.

  4. 非常轻巧. 它非常轻巧 (树抖动) ,大多数组件只有几百字节,因此您甚至可以从面向公众的组件库中导入它.

  5. 优先考虑方便. 它旨在提供方便的功能,如increment,toggle和聪明的像incrementDate,decrementMonth,因此您可以在几行代码中构建复杂的交互.

<br/>

例子

了解您的使用方法react-values,看看几个例子:

如果您有一个显示常见用例的示例,请拉取请求!

<br/>

文档

如果你正在使用react-values这是第一次看看入门指导您熟悉它的工作原理. 一旦你完成了,你可能想要查看全部API参考.

即使这还不够,你也可以,阅读源码,这很简单!

<br/>

帮忙

非常·欢迎!

看看贡献指示了解更多信息!

MIT许可.