UNPKG

react-form-data

Version:

React mixin to get form data in nice javascript object format.

79 lines (66 loc) 2.98 kB
# react-form-data React form data is a React mixin that will allow you to get data from an html form in a nice javascript object format. ## installation ```bash npm i react-form-data -S ``` or if you prefer the verbose format: ```bash npm install react-form-data --save ``` ## usage 1. Create a component containing form elements. 2. Add the form data mixin to the component 3. On an element wrapping all input elements, bind the ```onChange``` handler to ```this.updateFormData``` 4. You will now have access to the form data by accessing ```this.formData``` ### example ``` var React = require('react'); var FormData = require('react-form-data'); var MyForm = React.createClass({ mixins: [ FormData ], handleSubmit: function() { var url = 'urlToSendDataTo'; myRequestLib.post(url, this.formData); }, render: function() { return ( <form onChange={this.updateFormData} onSubmit={this.handleSubmit}> //input elements </form> ) } }); ``` ## input elements react-form-data supports ```input```, ```textarea``` and ```select``` elements. The name of an element is used as key in the created object and the value is fetched form the entered text, the selected ```option``` element or the defined ```value``` on the checked radio button. ### checkboxes Checkboxes can be used in two different ways. 1. A single checkbox can map ```true``` or ```false``` to its key. 2. Several checkboxes can be used to map an array of values to the same key. To use case 1, don't give the checkbox a value: ``` <input type="checkbox" name="acceptTerms" /> ``` ```this.formData.acceptTerms``` will be true or false depending on if the checkbox is checked or not. To use case 2, create several checkboxes with the same name but different values: ``` <input type="checkbox" name="skills" value="javascript" /> <input type="checkbox" name="skills" value="coffeescript" /> <input type="checkbox" name="skills" value="haskell" /> ``` ```this.formData.skills``` will be an array of the checked values. E.g. ```[ 'javascript', 'coffeescript' ]``` ## methods When adding the mixin to your component, these methods will be available on it: ### getInitialFormData() Implement this method to let ```this.formData``` be a non empty object in its initial state. Useful when you want to edit an existing entity. Any changes to the form will be added to this object. ### formDataDidChange() Called whenever there is a change in the form. The new data is available in `this.formData`. ### setFormData(key, value) Manually update ```this.formData``` with ```key``` and ```value``` ### clearFormData() Sets ```this.formData``` to an empty object. ### resetFormData(obj) Makes a shallow clone of object and replaces ```this.formData``` with the clone. ## demo This repository contains a demo. To run it, clone the repo and execute ```npm run demo```. You can now view the demo by visiting [http://localhost:3000](http://localhost:3000)