2.0.0 • Published 8 years ago

lazy-input v2.0.0

Weekly downloads
13
License
MIT
Repository
github
Last release
8 years ago

lazy-input

npm package Code Climate Test Coverage

A lazy React.js input field that only updates when it is told to re-render (fixes issues with Flux backed field data)

About

Using input elements with Flux can be a pain because actions are asynchronous. Triggering an action in the onChange handler will cause React's default input component to re-render the original value miliseconds before the new value arrives from the store.

LazyInput solves this problem by keeping an internal state for value and only updates that state when given new props, and then only after a lazyLevel has lapsed (default 1s). Otherwise, it works exactly like input. Well, almost. . .

LazyInput expands the type prop slightly to accept textarea in addition to the normal input types. We chose to do it this way because it seemed better than maintaining two packages (LazyInput and LazyTextarea), having lazy-input/input and lazy-input/textarea require statements, or having LazyInput.input and LazyInput.textarea.

var LazyInput = require('lazy-input');
// ...
render: function() {
  return (
    <div>
      // an input element
      <LazyInput type="text" value="some value" onChange={this.onChange} />

      // a test area element
      <LazyInput type="textarea" value="some value" onChange={this.onTextAreaChange} />
    </div>
  );
}

LazyInput can also accept any React Component as the type. For example, if you are using the react-input-placeholder to get placeholder working in older browsers (ex. IE9), then you can pass through the input component directly. There is plenty of rope here to hang yourself though, so be careful.

var Input= PlaceholderShim.input;
// ...
<LazyInput type={Input} value="some value" onChange={this.onChange} />

Installing

Installing via npmjs

npm install --save lazy-input

Using

LazyInput = require('lazy-input');
// ...
<LazyInput type="text" value={this.state.myFluxValue} onChange={this.onChange} />

Examples

git clone https://github.com/HurricaneJames/lazy-input.git
cd lazy-input
npm install
npm run examples
open localhost:8090

Changelog

v2.0 - Updated to support React 15.x, added examples

  • v2.0.0 in theory there is no reason this should not work with React 0.13+, just like before, the only thing that changed was the tests and the addition of examples.

v1.1 - LazyInput types can now include any React Component class. Thanks go to Riku Rouvila.

  • v1.1.1 - fixed bug where html5 descriptive input types crashed (ex. type="tel"). Thanks go to Eric Fennell for reporting the bug.
2.0.0

8 years ago

1.1.1

9 years ago

1.1.0

9 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago