React-binding este un utilitar usor pentru legarea bidirectionala a datelor in React.

import React din „reactioneaza”; importati ReactDOM din „react-dom”; import Binder din „react-binding”; clasa implicita de export Form extinde React.Component {constructor (props) {super (props); this.state = {date: {}}; }, redati {return (<div> <input valueLink = {Binder.bindToState (this, “data”, “Employee.FirstName”)} /> <div> FirstName: {this.state.data.Employee.FirstName} < / div> </div>)}}); ReactDOM.render (<Form />, document.getElementById („continut”));

Caracteristici:

  • Fara dependente.
  • Interfata minima – folosind calea cu notatie punct.
  • Suport pentru obiecte complexe.
  • Suport pentru structuri bazate pe colectie – tablouri si liste.
  • Suport pentru convertizoare de valoare.
  • Nu este nevoie sa definiti valorile initiale, structurile imbricate. Binder creeaza acest lucru pentru dvs.
  • Concept de asistenta pentru referinte pentru a permite utilizarea JSON pentru a reprezenta informatiile grafice.

react-binding ofera suport de legare a datelor in doua directii pentru:

  • proprietati obiect cu expresie cale (notatie punct)
    • Binder.bindToState (acesta, „date”, „ Employee.FirstName ”);
    • Binder.bindToState (acesta, „date”, „ Employee.Contact.Email ”);
  • obiecte complexe (json) cu proprietati imbricate
    • Binder.bindTo ( angajat , „ Prenume ”);
    • Binder.bindTo ( angajat , „ Contact.Email ”);
  • structuri bazate pe colectii – tablouri si liste
    • model = {Binder.bindArrayToState (aceasta, „date”, „ Hobby-uri ”)}
      • this.props.model. articole .map (functie (element) {return ();})
      • this.props.model. adauga()
      • this.props.model. elimina (element)
  • accepta interfata „value / requestChange” si pentru a permite utilizarea atributului ReactLink
    • valueLink = {Binder.bindTo (angajat, „Prenume”)}
  • permite legarea cu convertoare de valori
    • accepta ambele directii – format (toView) si analiza (fromView)
    • suport pentru parametrul convertorului – valueLink = {Binder.bindToState (aceasta, „date” , „Durata.De” , convertor, „DD.MM.YYYY” )}
    • parametrul convertorului poate fi legat de date – valueLink = {Binder.bindToState (acesta, “date”, ” Durata.De “, convertorul, acest.stat.format )}
  • utilizabil cu orice cadru CSS
    • react-bootstrap
    • material-ui

Fiecare bindTo revine si foloseste interfata numita “value / onChange”. Fiecare componenta bindTo primeste o valoare (pentru a o reda la UI), precum si setter la o valoare care declanseaza o redare (de obicei in locatia de sus).

Redarea se face in componenta in care va legati la starea prin (bindToState, bindArrayToState).

BindTo poate fi imbricat – compus pentru a sprijini compozitia componentelor. Apoi calea este concatenata in functie de relatia parinte-copil.

  • manager de pachete nod
npm instalati react-binding
  • manager de pachete cod client
bower instaleaza legarea de reactie
  • gruparea cu browserify
npm install -g browserify npm install reactify browserify ./index.js> bundle.js

exemplu minim

import React din „reactioneaza”; importati ReactDOM din „react-dom”; import Binder din „react-binding”; clasa implicita de export Form extinde React.Component {constructor (props) {super (props); this.state = {date: {}}; }, redati {return (<div> <input valueLink = {Binder.bindToState (this, “data”, “Employee.FirstName”)} /> <div> FirstName: {this.state.data.Employee.FirstName} < / div> </div>)}}); ReactDOM.render (<Form />, document.getElementById („continut”));

Nota : React-binding ca mixins – utilizati npm install [email protected]

bindToState (cheie, expresie cale)

Permite legarea la proprietatea obiectului cu expresia caii

  • folosind ReactLink
<input type = ‘text’ valueLink = {Binder.bindToState (aceasta, „date”, „Employee.Contact.Email”)} />
  • fara ReactLink
<TextBoxInput model = {Binder.bindToState (aceasta, „date”, „Employee.Contact.Email”)} />
var TextBoxInput = React.

follada por su jefe
maduras enculadas sexogratis
coños gordos sexo gratis
mujeres normales desnudas videos sexo
michelle jenner desnuda mia kalifa
rebeca linares masaje porno abuelas
sol sanchez actriz porno videos de sexo gratis
coñosxxx pprno
asiaticasxxx guarras españolas
putasfollando nicolette shea
videos porno caseros en español videos sexo gratis
casting porno español zofilia
madres haciendo pajas a sus hijos abuelas porno
porno retro incesto videos guarros
swingers españoles maduras en playas nudistas
negras tetonas videos de investo
maduras españolas amateur video sexo
culos porno coñitos
filme porno romanesti guarras.com
pilladas españolas follando videos guarros

createClass ({render: function () {var valueModel = this.props.model; var handleChange = function (e) {valueModel.value = e.target.value;} return (<input type = ‘text ‘onChange = {handleChange} value = {valueModel.value} />)}});

bindTo (parinte, pathExpression)

Permite legarea la obiect complex cu proprietati imbricate si refolosirea legarilor in componente.

  • legandu-se la stare la nivelul radacinii
<PersonComponent personModel = {Binder.bindToState (this, “data”, “Employee”)} /> <PersonComponent personModel = {Binder.bindToState (this, “data”, “Deputy”)} />
  • obligatoriu de parinte
<input type = ‘text’ valueLink = {Binder.bindTo (this.props.personModel, “Contact.Email”)} />
  • refolositi legaturile in componenta
var PersonComponent = React.createClass ({render: function () {return (<div> <input type = ‘text’ valueLink = {Binder.bindTo (this.props.personModel, “FirstName”)} /> <input type = valueLink ‘text’ = {Binder.bindTo (this.props.personModel, “LastName”)} /> <input type = ‘text’ valueLink = {Binder.bindTo (this.props.personModel, “Contact.Email”)} /> </div>);}});

bindArrayToState (cheie, pathExpression)

Permite legarea la structuri bazate pe colectie (matrice). Permite adaugarea si eliminarea articolelor.

  • legarea la matrice
<HobbyList model = {Binder.bindArrayToState (aceasta, „date”, „Hobby-uri”)} />
  • acces la elemente (this.props.model.items)
var HobbyList = React.createClass ({render: function () {if (this.props.model.items === nedefinit) return <span> Nu exista articole. </span>; var hobbies = this.props.model .items.map (functie (hobby, index) {return (<Hobby model = {hobby} cheie = {index} onDelete = {this.handleDelete} />);}, this); return (<div> {hobby} </div>);}});
  • adaugati elemente noi (this.props.model.add (newItem?))
handleAdd: function () {return this.props.model.add (); },
  • eliminati articolele care ies (this.props.model.props.delete (item))
handleDelete: function (hobby) {return this.props.model.remove (hobby); },

bindArrayTo (parinte, pathExpression)

Permite legarea la structuri bazate pe colectie (matrice) pentru matrici imbricate. Permite adaugarea si eliminarea articolelor.

  • legarea la matrice
<HobbyList model = {Binder.bindArrayTo (acesta, parinte, „Hobby-uri”)}} />
  • acces la elemente (this.props.model.items)
var HobbyList = React.createClass ({render: function () {if (this.props.model.items === nedefinit) return <span> Nu exista articole. </span>; var hobbies = this.props.model .items.map (functie (hobby, index) {return (<Hobby model = {hobby} cheie = {index} onDelete = {this.handleDelete} />);}, this); return (<div> {hobby} </div>);}});
  • adaugati elemente noi (this.props.model.add (newItem?))
handleAdd: function () {return this.props.model.add (); },
  • eliminati articolele care ies (this.props.model.props.delete (item))
handleDelete: function (hobby) {return this.props.model.remove (hobby); },

Convertoare de valoare

Convertoare de valoare

  • format – traduce datele intr-un format potrivit pentru vizualizare
  • analizati – convertiti datele din vizualizare intr-un format asteptat de datele dvs. (de obicei atunci cand utilizati legaturi bidirectionale cu elemente de intrare in date).

Exemplu – convertor de date -> folosind parametrii „dateFormat” este optional

var dateConverter = function () {this.parse = function (input, dateFormat) {if (!!! input) return nedefinit; if (input.length <8) returneaza nedefinit; var data = moment (input, dateFormat); if (date.isValid ()) return date.toDate (); reveni nedefinit; } this.format = function (input, dateFormat) {if (!!! input) return nedefinit; return moment (input) .format (dateFormat); }}

folosind convertorul

<DatePicker label = “From” model = {Binder.bindToState (this, “data”, “Duration.From”, converter, ‘DD.MM.YYYY’)} error = {this.validationResult (). Duration.From} /> <DatePicker label = “To” model = {Binder.bindToState (this, “data”, “Duration.To”, converter, ‘DD.MM.YYYY’)} error = {this.validationResult (). Duration. Catre} />

incearca in Plunker

Referinte

JSON modeleaza copaci, iar majoritatea domeniilor de aplicatii sunt grafice. Binding accepta conceptul pentru referinte pentru a permite utilizarea JSON pentru a reprezenta informatiile grafice.

  • Fiecare entitate este inserata intr-o singura locatie unica la nivel global in JSON cu un identificator unic.
  • Fiecare referinta este un obiect al $ type = ‘ref’ si trebuie sa contina valoare ca cale catre o locatie unica, globala unica in JSON – {$ type: ‘ref’, valoare: [‘todosById’, 44]}
{todosById: {“44”: {nume: “obtineti lapte din magazinul de la colt”, facut: fals, conditii prealabile: [{$ type: “ref”, valoare: [“todosById”, 54]}]}, “54” : {nume: “retrageti bani de la bancomat”, facut: fals, conditii prealabile: []}}, todos: [{$ type: “ref”, valoare: [“todosById”, 44]}, {$ type: “ref “, valoare: [” todosById “, 54]}]};

formular hobby – numai legarea datelor

  • fara cadru UI – incercati in Plunker
  • cu react-bootstrap – incercati in Plunker

formular de hobby cu validare folosind motorul de reguli de afaceri

  • fara cadru UI – incercati in Plunker
  • cu react-bootstrap – incercati in Plunker
  • cu material-ui
    • demo
    • surse

convertoare de valoare

  • selector de date – incercati in Plunker

a lua legatura

Pentru mai multe informatii despre legarea reactiilor, va rugam sa consultati blogul meu.