2016-06-20 8 views
5

Goal

Per creare, ciò che è a mio parere, un quadro quasi perfetto voglio usare Aurelia in combinazione con ReactJS (componenti principalmente solo creando che possono essere utilizzati all'interno di Aurelia).Utilizzando ReactJS a rendere componenti all'interno Aurelia

Per raggiungere questo obiettivo ci sono diverse opzioni (Vedi http://ilikekillnerds.com/2015/03/how-to-use-react-js-in-aurelia/ e https://github.com/bryanrsmith/aurelia-react-loader)

La prima opzione ha lo svantaggio che il componente è avvolto all'interno di un elemento personalizzato, che io non voglio fare per tutti gli elementi che ho intenzione sulla creazione. La seconda opzione è piuttosto carina, non è vero che il componente è generato da un'istanza del componente (invece del markup html).

lavoro già svolto

La cosa che ho cercato di fare ora è quello di creare un attributo personalizzato che fa ReactJS rendono l'innerHTML dell'elemento specifica.

import { customAttribute, inject } from 'aurelia-framework'; 
import React from 'react'; 
import ReactDOM from 'react-dom'; 

// ToDo: have one file to import all dependent components 
import { MyReactComponent } from 'components/my-react-component'; 

@inject(Element) 
@customAttribute('react-content') 
export default class ReactCustomAttribute { 
    constructor (element) { 
     console.log(element.innerHTML); 
     this.element = element; 
     ReactDOM.render(
      <div dangerouslySetInnerHTML={{__html: this.element.innerHTML}}></div>, 
      this.element); 
     // ReactDOM.render(
     //  <MyReactComponent><h2>lol</h2><h2>lol</h2></MyReactComponent>, 
     //  this.element); 
    } 
} 

Se la soluzione sopra funzionasse sarei assolutamente felice. Ma, come Aurelia vuole rispettare gli standard web, mette tutti i nomi degli elementi in minuscolo. (this.element.innerHTML restituisce <myreactcomponent><h2>lol</h2><h2>lol</h2></myreactcomponent>) In questo modo ReactJS non può eseguire il rendering dei componenti.

Il pezzo che ho commentato nello snippet di codice sopra funziona davvero.

Domande

  • Come posso ottenere ReactJS per rendere correttamente questi componenti?
    • E 'possibile configurare Aurelia per non trasformare i nomi degli elementi in lettere minuscole?
    • E 'possibile per ReactJS vedere la relazione tra gli elementi HTML scritti in nomi di classi kebab-case e javascript?
+0

Ciao, hai fatto un compito? e sto lavorando aurelia - reagisci, guarda reagire modello è aurelia, qui ho una funzione click nella mia vista (reagisci) ** onClick = {this.myfun} ** mentre cliccandoci devi portarla ad aurelia dove si trova myfun. qualche idea. – sibi

risposta

0

Come posso ottenere ReactJS di rendere correttamente questi componenti?

Devi farlo nel metodo attached() del tuo modello di visualizzazione aurelia.

E 'possibile configurare Aurelia per non trasformare i nomi degli elementi in lettere minuscole?

La risposta corretta è "non c'è nessun caso"
tag e nomi di attributi sono case insensitive in HTML.
E Aurelia è basata su standard.

E 'possibile per ReactJS vedere la relazione tra gli elementi HTML scritti in nomi di classi kebab-case e javascript?

Questo avrà bisogno di un po 'di insegnamento. Puoi vedere come Aurelia tratta le convenzioni di denominazione nella fonte https://github.com/aurelia/templating/blob/master/src/html-behavior.js

Problemi correlati