2015-04-18 12 views
6

Ich benutze react-rails und browserify. In dem application.js verwende ichWie vermeidet man, dass reactjs zweimal in einer Rails and Reacts-Umgebung enthalten sind?

// require react 
// require react-ujs 

Auch tcomb-Form ich von

var t=require("tcomb-form") 

Als Ergebnis mit I reactjs sah zweimal in meiner Asset-Pipeline enthalten.

Wie sollte ich reactjs mit Schienen richtig benutzen?

EDIT:

durch die Art und Weise, wenn Sie diesen Fehler in der Konsole zu sehen, haben Sie wahrscheinlich mit reactjs das gleiche Problem haben und es zweimal enthalten.

[Error] Error: Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's render method). Try rendering this component inside of a new top-level component which will hold the ref. 

Antwort

0

durch die Art und Weise, die Abhilfe kam ich mit ist die folgende von application.js

// require react 
// require react-ujs 

und einfach kopieren und fügen Sie den Quellcode für reagieren-UJS in application.js zu entfernen und Verwenden Sie

var React = require("react"); 

Ich weiß, es ist nicht elegant, wenn Sie bessere Vorschläge haben, lassen Sie es mich bitte wissen. Diese

0
//= require_self 
//= require react_ujs 

global.React = require('react'); 

ist, wie ich bin mit Browserify & Rails reagieren. Stellt uns auch zum Testen ein.

+0

Ich werde versuchen, so regt sich Ihr Weg react_ujs nicht über nicht in der Lage, React zu finden? – ziweizhou

+0

Es tut mir leid, es funktioniert nicht, es sei denn, Sie deklarieren React als eine globale Variable. Andernfalls wird react_ujs sich beschweren, dass es React nicht finden kann. Uncaught ReferenceError: Reaktion ist nicht definiert – ziweizhou

+0

Aye. Ich habe es falsch eingegeben, hätte auf globaler Ebene gehen sollen. Oben behoben. Eine andere Möglichkeit, serverseitiges Rendering zum Laufen zu bringen, ist das Vorkompilieren/Durchsuchen und das Erstellen des Bundles über react_ujs. Arbeiten Sie noch daran und richten Sie Mocha-Tests ein. –

1

fand ich, dass

app/assets/javascripts/server_rendering.js 

in zweimal wurde verwiesen reagieren, wenn ich die Linie

//= require react-server 

es meine Probleme behoben entfernt und wurde von der addComponentAsRefTo() Fehler beseitigen. Bitte bedenken Sie, dass ich noch nicht versucht habe, die App zu implementieren, aber das hat funktioniert, um es zu knacken.