在reactjs

时间:2015-11-01 18:31:35

标签: javascript reactjs

快速提问。我正在学习反应js。

当我们创建一个组件时,我们在render函数中提供要呈现的组件的html模板。 到目前为止,我只看到了具有非常小的html片段的小组件,但我只是想知道如果我们有一个带有大量html模板的组件会发生什么,有没有办法提供单独的html文件的路径?或者我们被迫直接在render函数中编写所有html?谢谢!

2 个答案:

答案 0 :(得分:5)

您应该始终在渲染功能中编写它。你不是在那里写HTML,而是编写JSX,它被编译成Javascript。像<div className="test">这样的内容会转换为React.createElement("div", {className: 'test'});

只要将大型组件分解为许多较小组件的组合,就不应该存在大小问题。您可以通过将其包含在渲染功能中来包含其他组件,如下所示:<SomeComponent someProp="someVal" />

答案 1 :(得分:3)

您可以将渲染功能拆分为一堆名称很好的方法,例如旧的普通html模板中的部分。制作复杂的反应组件非常有用,因为您将从代码中删除大的不可读的html-part。

例如,这里有一些伪代码描述了这种方法:

class NavBar extends React.Component {

  // Render user name and links on profile and logout 
  renderUser() {
    if (!user) return;
    return <div>{user.name}</div>;
  }

  // Render list with nav-bar items if they exists
  renderNavBarItems() {
    if (!user) return;
    return <ul>{this.items.map((i) <li><a href={i.link}>{i.name}</a></li>)}</ul>;
  }

  render() {
    return (<div className="nav-bar">
      {this.renderNavBarItems()}
      {this.renderUser()}
    </div>);
  }
}