2016-07-14 67 views
1

使用react路由器,并且当前只在我处于索引路由"/"和其他内容之外的情况下尝试呈现某些内容。如果在索引路径上呈现内容React JS

这就是我到目前为止所提出的,没有错误出现,但它似乎没有与代码打得很好。

var renderContent = function() { 
    return (
     <div className="contain"> 
      {this.props.sidebar} 
      <div className="page"> 
       {this.props.main} 
      </div> 
     </div> 
    ) 
} 

var renderHomepage = function() { 
    return (
     <div className="homepage"> 
      {this.props.main} 
     </div> 
    ); 
} 

var toRender = function() { 
    if (this.props.path == '/') { 
     {this.renderHomepage()} 
    } else { 
     {this.renderContent()} 
    } 
} 

那么下面我继续:

export default React.createClass({ 
render() { 
    return(
    <div> 
     <div className="main-content"> 
     {toRender} 
... 

一切似乎都渲染上的任何路线。有任何想法吗?

编辑:

... 

import Home from './Home' 

module.exports = (
    <Route path="/" component={App}> 
     <IndexRoute component={Home}/> 
     <Route path="design" component={{main: deMain, header: deHeader, sidebar: sbAnimations}}> 
      <Route path="scheme" component={deScheme}/> 
     </Route> 
    </Route> 
) 

在我的Home组件看起来是这样的:

import React from 'react' 

export default React.createClass({ 
    render() { 
     return (
      <div className="hero"> 
      </div> 
     ) 
    } 
}) 
+0

一些路由定义呢?你能否把这些包括在内呢? –

+0

编辑他们到问题 –

回答

0

你就错了。你的renderContent,renderHomepagetoRender被定义为你的类的外部并且无权访问this.props.path。这些将需要在你的班级内部进行定义。像这样:

export default React.createClass({ 
renderContent() { 
    ... 
} 
renderHomepage() { 
    ... 
} 
toRender() { 
    if (this.props.path == '/') { 
     return this.renderHomepage(); 
    } else { 
     return this.renderContent(); 
    } 
} 
render() { 
    return(
    <div> 
     <div className="main-content"> 
     {this.toRender()} 
... 

把你的渲染函数React.createClass应该工作。你的toRender函数需要更新才能返回函数。你需要执行这个.toRender

+0

嗯我明白你的意思,但我得到一个错误在这里:'超级()在课堂构造函数外' –

+0

哦拍摄我搞砸了 –

+0

我只是盲目复制和粘贴,并认为你正在扩展'反应.Component',但你正在使用'createClass'去除构造函数应该可以工作 –