javascript - React JS 从另一个位置导入/需要文件/页面

标签 javascript reactjs

我一直在寻找一些例子,但没有运气,或者我只是不知道它是什么样子。我想做的是做我在 Rails 或 PHP 中会做的事情 - 所以渲染或包含。我想将不同页面的内容存储在不同的文件中。我知道我可以将它存储在一个文件中,但不建议使用数百行代码......我想在许多文件中保持简短。 (除非 ReactJS 不应该这样构建)

这是我的页面结构:

enter image description here

我如何将projects.js链接到app.js - 并调用它来显示projects.js中的内容

app.js

var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var Link = ReactRouter.Link;
var IndexRoute = ReactRouter.IndexRoute;

var ReactDOM = require('react-dom');
var React = require('react');

var Projects = require('./pages/projects');

var Header = React.createClass({
  render : function() {
    return (
            <div className="navmenu">
              <ul id="menu">
                <li><Link to="/">Home</Link></li>
                <li><Link to="about">About</Link></li>
                <li><Link to="projects">Projects</Link></li>
                <li>News</li>
                <li>Contact</li>
              </ul>
            </div>
        );
  }
});

var Logo = React.createClass({
  render : function() {
    return (
      <div className="logo col-md-4">
        <div>
          <img src="images/logo.png" />
        </div>
      </div>
    );
  }
});

var slide_one = React.createClass({
  render : function() {
    return (
      images/slides/blank.gif
    );
  }
});


var Slides = React.createClass({
  render : function() {
    return (
            <div className="container">
              <div className="row wrap">
                <div className="col-md-12 gallery"> 
                  <div className="camera_wrap camera_white_skin" id="camera_wrap_1">
                    <div data-thumb="" data-src="images/slides/blank.gif">
                      <div className="img-responsive camera_caption fadeFromBottom">
                        <h2>Great cars</h2>
                      </div>
                    </div>
                    <div data-thumb="" data-src="images/slides/blank.gif">
                      <div className="img-responsive camera_caption fadeFromBottom">
                        <h2>Fast cars</h2>
                      </div>
                    </div>
                    <div data-thumb="" data-src="images/slides/blank.gif">
                      <div className="img-responsive camera_caption fadeFromBottom">
                        <h2>Super cars</h2>
                      </div>
                    </div>
                    <div data-thumb="" data-src="images/slides/blank.gif">
                      <div className="img-responsive camera_caption fadeFromBottom">
                        <h2>We have it all!</h2>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
    );
  }
});

var Footer = React.createClass({
  render : function() {
    return (
    <div>
      <div className="line7">
        <div className="container">
          <div className="row footer">
            <div className="col-md-12">

                <br /><br />

              <h3>Subscribe for Our Newsletter!</h3>
              <p>Subscribe to our newsletter email to get notification about fresh news, latest promos, giveaways and free stuff from Skew. Stay always up-to-date!</p>
              <div className="fr">
                <div className="boxCenter">
                  <input className="col-md-6 fEmail" name='Email' placeholder='Enter Your Email'/>
                  <a href="#" className="subS">Subscribe!</a>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div className="lineBlack">
        <div className="container">
          <div className="row downLine">
            <div className="col-md-12 text-right">

            </div>
            <div className="col-md-6 text-left copy">
              <p>Copyright; 2016 Cruisin. All Rights Reserved.</p>
            </div>
            <div className="col-md-6 text-right dm">

            </div>
          </div>
        </div>
      </div>
    </div>
    );
  }
});

var Home = React.createClass({
  render : function() {
    return (
            <div className="container">
              <div className="row">
                <div className="col-md-12 cBusiness">
                  <p>Home Page</p>
                  <br />
                  <br />
                </div>
              </div>
            </div>
    );
  }
});

var About = React.createClass({
  render : function() {
    return (
            <div className="container">
              <div className="row">
                <div className="col-md-12 cBusiness">
                  <p>About Page</p>
                  <br />
                  <br />
                </div>
              </div>
            </div>
    );
  }
});

var App = React.createClass({
  render : function() {
    return (
      <div>
        <div id="home">
          <div className="headerLine">
            <div id="menuF" className="default">
              <div className="container">
                <div className="row">

                  <Logo />

                  <Header />
                  <Slides />

                </div>
              </div>
            </div>
          </div>

                  {this.props.children}

        </div>

        <Footer />

      </div>

    )
  }
});

ReactDOM.render((
  <Router >
    <Route path="/" component={App}>
      <IndexRoute component={Home} />
      <Route path="about" component={About} />
      <Route path="projects" component={Projects} />
    </Route>
  </Router>
), document.getElementById('mount-point')) ;

projects.js

var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var Link = ReactRouter.Link;
var IndexRoute = ReactRouter.IndexRoute;

var ReactDOM = require('react-dom');
var React = require('react');

var Projects = React.createClass({
  render : function() {
    return (

            <div className="container">
              <div className="row">
                <div className="col-md-12 cBusiness">

                  <p>Projects Page</p>

                  <br />
                  <br />
                </div>
              </div>
            </div>
    );
  }
});

我几次尝试调用它。我是 JS 新手,但仍然会犯错误。

如何使其工作,或者在 ReactJS 中是否有其他方法可以做到这一点?

如果还有像这样的另一个主题,我深表歉意 - 我真的不知道我想在这里做什么的技术名称。

最佳答案

您需要确保导出项目。将其添加到projects.js 文件module.exports = Projects; 的底部。以及 App.js 中的 var Projects = require('./pages/projects.js');

关于javascript - React JS 从另一个位置导入/需要文件/页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487534/

相关文章:

javascript - 试图理解这个函数 : Array. prototype.reverse = function() {

javascript - 拉斐尔投影效果

reactjs - 如何在 React Hooks 中单击父级中的按钮时将焦点设置在子组件的输入上

javascript - 基于另一个组件生命周期的显示组件

javascript - 如何(在哪里)存储网站中实时操作的信息?

javascript - 在此示例中,jQuery 对 "this"做了什么?

javascript - 如何在 Javascript 中按顺序执行代码?

reactjs - React - enzyme 测试 - 模拟变化返回未定义

javascript - 用 forwardedRef react FC

javascript - Redux-Saga 文档中奇怪的登录流程示例