2015-10-04 10 views
5

ho voluto usare https://github.com/chenglou/react-motion ma quando guardo il primissimo esempio:sintassi Travolgente sulle reagire-motion

import {Motion, spring} from 'react-motion'; 
// In your render... 
<Motion defaultStyle={{x: 0}} style={{x: spring(10)}}> 
    {value => <div>{value.x}</div>} 
</Motion> 

ho ottenuto sopraffatto con la sintassi ES6 e la sintassi JSX. Ho provato a tradurlo sul babel REPL ma strisce fuori la sintassi JSX:

"use strict"; 

React.createElement(
    Motion, 
    { defaultStyle: { x: 0 }, style: { x: spring(10) } }, 
    function (value) { 
    return React.createElement(
     "div", 
     null, 
     value.x 
    ); 
    } 
); 

Cosa comporta tutto questo per sintassi pre-ES6 JSX?

+0

* "Che cosa significa questa sintassi pre-ES6?" * Esattamente ciò che Babel mostra. Cosa trovi nello specifico confuso? L'unica cosa specifica per es6 nel primo esempio è l'importazione del modulo e la funzione freccia. Qualsiasi altra cosa è JSX o oggetti letterali. –

+0

@FelixKling, scusate, volevo dire "In cosa consiste questo nella sintassi JSX pre-ES6?" – Michelle

+0

Basta sostituire la funzione freccia con un'espressione di funzione. 'function (value) {return

{value.x}
; } '. Il risultato è la tua risposta. –

risposta

6
import {Motion, spring} from 'react-motion'; 
// In your render... 
<Motion defaultStyle={{x: 0}} style={{x: spring(10)}}> 
    {value => <div>{value.x}</div>} 
</Motion> 

potrebbe scrivere equivalentemente come

var ReactMotion = require("react-motion"); 
var Motion = ReactMotion.Motion; 
var spring = ReactMotion.spring; 
// In your render... 
<Motion defaultStyle={{x: 0}} style={{x: spring(10)}}> 
    {function (value) { return <div>{value.x}</div>; }} 
</Motion> 

senza caratteristiche ES6 ma utilizzando JSX.

hanno solo due cose che sono molto diverse (con collegamenti a documenti del caso):

sintassi anche come <Motion defaultStyle={{x: 0}} style={{x: spring(10)}}> è spesso fonte di confusione, ma ricordate che attr={} permette di trasmettere l'espressione JS, e la espressione è semplicemente un oggetto letterale. Questo è funzionalmente equivalente a:

var defaultStyle = {x: 0}; 
var style = {x: spring(10)}; 
<Motion defaultStyle={defaultStyle} style={style}>