2016-07-01 15 views
0

Ich versuche es kurz zu halten.React-Native erfordern eine Klasse von einem 'Nicht-Klasse' .js und verwenden Sie die Funktionen

I want to "outsource" my logical functions wich i need over more than 3-4 classes. Therefore i created a .js file and entered the function. But i did not create a class for it . Instead i am using the following syntax:

var myMainClassWithTheFunction = require('./myMain...'); 

var FunctionHandler = { 
    myFunction(){ 
     myMainClassWiththeFunction.testFunction();    
    } 
} 

module.exports = FunctionHandler 

Inside of this function i want to use the method of another class -> The class is structured like the following

class MyMainClass.. extends Component { 
    constructor(props){ 
     super(props); 
    } 
static testFunction(
    alert("Test"); 
) 
render(){...} 
} 

module.exports = MyMainClass; 

The class MyMainClass... is working (Checked through many other calls - But those just got from other classes)

I also tested myFunction from FunctionHandler with a function testAlert() wich worked perfectly.

Das Hauptproblem Soweit ich versuchen, die testFunction() aus dem Mainclass ich die folgende Fehlermeldung erhalten, rufen:

undefiniert keine Funktion (Bewertung 'myMainClass.test Funktion()‘

  • habe ich versucht, eine statische/nicht-statische Funktion

Meine Frage Wie kann ich dieses Problem lösen - oder wissen Sie noch bessere Möglichkeiten, um auslagern die logisches Verhalten

Antwort

0

Nach Stunden des Suchens, was mein Problem ist hier fand ich heraus, dass:

If you fill your js-file with just a var like i did. You cannot require other classes in another var and use the var in other var's (in my case my FunctionHandler var)

Lösung

I required the classes inside my var so i could use them.

var FunctionHandler = { 
    var myMainClassWithTheFunction = require('./myMain...'); 

    myFunction(){ 
     myMainClassWiththeFunction.testFunction();    
    } 
} 

module.exports = FunctionHandler

Ich bin sicher, Viele Leute rollen jetzt die Augen, wenn sie das lesen und denken "das ist klar", aber für mich ist es w als zeitaufwändiges Thema. Hoffentlich kann jeder helfen

0

Sie exportieren die Klasse ListViewMain anstelle von MyMainClass. Ich nehme an, Sie haben mehrere Klassen in der gleichen Datei: ListViewMain und MyMainClass. Entweder MyMainClass in eine separate Datei bewegen und exportieren MyMainClass oder Ihren Export zu etwas ändern wie:

module.exports = {ListViewMain, MyMainClass}; 

, es zu benutzen

var {MyMainClass} = require('./myMainClass'); 

Alternativ können Sie ES6 Syntax verwenden:

export class MyMainClass extends Component {...} 

zu Verwenden Sie es

import {MyMainClass} from './myMainClass'; 
+0

Hey Daniel, sry für die späte Antwort. Ich habe nur die richtige Syntax in meinem Code mit dem Modul.exports - nur für das kurze Beispiel habe ich es falsch gemacht. Bis jetzt habe ich das Quest bearbeitet. Aber Sie Lösungen mit {] um die Var und die ES6-Syntax funktionieren nicht. Soweit ich eine Lösung dafür habe, lasse ich es Sie wissen. –

+0

Ich habe den Grund für mein Problem als Antwort hinzugefügt, wenn Sie interessiert sind :) Danke trotzdem für Ihre Hilfe. –