2016-09-14 3 views
0

Ich habe diese globale Variable für Config-Werte, die ich in index.js erfordernVariable ist undefine - React JS

import React from 'react'; 
import ReactDOM from 'react-dom'; 

// Config 
const Dir = require('./Config/dir.jsx'); 

// Components 
import Header from './Components/Header.jsx'; 

ReactDOM.render(<Header />, document.getElementById('app')); 

dies der Inhalt meiner dir.jsx ist

module.exports = { 
    css: 'public/css/', 
    js: 'public/js/', 
    img: 'public/img/' 
} 

Als ich accesssed die config-Variable in meinen header.jsx-Komponenten mit {Dir.css} gibt mir einen Fehler "Dir ist nicht definiert".

Hier ist der header.jsx:

import React from 'react'; 

require('./../Stylesheets/header.scss'); 

class Header extends React.Component { 
    render() { 
     return (
      <div> 
       <nav className="navbar navbar-default"> 
        <div className="container-fluid"> 
         <div className="navbar-header"> 
          <button type="button" className="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> 
           <span className="sr-only">Toggle navigation</span> 
           <span className="icon-bar"></span> 
           <span className="icon-bar"></span> 
           <span className="icon-bar"></span> 
          </button> 
         <a className="navbar-brand" href="#">{ Dir.img }</a> 
         </div> 
         <div className="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
          <ul className="nav navbar-nav"> 
           <li className="active"><a href="#">Link <span className="sr-only">(current)</span></a></li> 
           <li><a href="#">Link</a></li> 
          </ul> 
          <ul className="nav navbar-nav navbar-right"> 
           <li><a href="#">Link</a></li> 
          </ul> 
         </div> 
        </div> 
       </nav> 
      </div> 
     ); 
    } 
} 

export default Header; 

Hier ist der Screenshot:

enter image description here

+0

Haben Sie versucht, mit 'Import Dir aus‘./Config/dir.jsx''? – slorenzo

+1

Sie sagen, es ist undefiniert in Ihrer Header-Komponente, sollten Sie diesen Code und die tatsächliche Zeile auf – azium

+1

crashen Absturz Das erste, was ich bemerke, ist Ihre Definition Dir in der Datei, die Sie gebucht, aber es wird in Header verwendet. Das tut Ihnen wirklich nicht gut und Sie müssen sicherstellen, dass Sie entweder Dir als Requisiten an die Header-Komponente übergeben oder Dir innerhalb der Header-Komponentendatei benötigen, aber ohne die Header-Datei zu sehen, kann ich keinen weiteren Einblick geben. – finalfreq

Antwort

1

Ich nehme an, Sie webpack verwenden Ihr Projekt

webpack won‘zu bauen t Importieren Sie Dateien, sofern sie nicht verwendet werden. In Ihrem Fall importieren Sie nur Dir und verwenden nirgendwo. webpack wird diesen Import aus offensichtlichen Gründen überspringen.

Es gibt zwei Dinge, die Sie tun können:

  1. Import Dir innerhalb der Header Komponente
  2. Übergeben Sie die Dir als prop zum Header Komponente. So <Header dir={Dir} />. Dies kann durch this.props.dir innerhalb der Header Komponente erreicht werden.

Ich bevorzuge die 1st Art zu tun.

P.S. Sie sollten import und require nicht zusammen verwenden.

+0

Sie können [this] (https://github.com/praneshr/petch/blob/master/webpack.config.babel.js) 'webpack'-config beziehen, um Ihre' scss'-Kompilation besser zu machen. –

+0

was macht das? Tut mir leid, ich bin noch nicht so vertraut in dieser Art von Stack. –

2

Import Dir innerhalb der Header Komponente als import Dir from './Config/dir.jsx'