如何在ES6中分离Jsx内部渲染函数到一个单独的文件?或任何其他解决方案,以分离逻辑和表示
How to Separate Jsx inside render function into a separate file in ES6? or any other solution in react to separate the Logic and presentation?
以下是ES5中的代码,其中jsx被写入一个单独的文件
import React from 'react';
import Template from './template.jsx';
const DetailElement = React.createClass({
render: Template
});
export default DetailElement;
enter code here
模板。JSX文件将像这样
import React from 'react';
const render = function() {
return (
<div>Hello World</div>
);
};
export default render;
我如何使用ES6类写相同的?或者有其他解决方案可以实现这种分离吗?
我已经得到了ES6代码像这样
import React, {Component} from 'react';
import Template from './template.jsx';
export default DetailElement extends Component {
componentDidMount() {
// some code
}
};
DetailElement.prototype.render = Template;
是的,你可以这样做,你的模板代码就像一个功能组件,基本上它是一个返回jsx的函数。你只需要在DetailElement类
中呈现你的模板import React from 'react';
import Template from './template.jsx';
class DetailElement extends React.Component{
render = Template
};
export default DetailElement;
这里是一个例子,我创建了一个相互依赖的链接现在是一个es6的类特性,你可以在类或Babel transformer之外定义类属性,你需要检查
使用类似无状态函数的东西来定义组件的JSX
const HTML = (props) => <div> Hello {props.name}!</div>
class A extends React.Component{
render() {
return <HTML name="Joe"/>
}
}
ReactDOM.render(<A/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
你必须从'react'中导入Component并将其扩展到class中。
import React, { Component } from 'react';
import Template from './template.jsx';
export class DetailElement extends Component{
render(){
return(
<Template></Template>
);
}
}
下面是ES6 React的样子
import * as React from 'react'
class SomeComponent extends React.Component{
constructor(props){
super(props);
}
render(){
return (<div className="some class name">
Hello World
</div>
)
}
}
export default SomeComponent;
//import will look like
import SomeComponent from "./SomeComponent";
Detail元素应该是这样的
import * as React from 'react'
import SomeComponent from "./SomeComponent";
class DetailElement extends React.Component{
constructor(props){
super(props);
}
render(){
return (<div className="some classes">
<SomeComponent/>
</div>
)
}
}
export default DetailElement;
不确定es6的类,但你可以在react组件外写一个函数,像这样
export const somefun = (parameter1)=> {
return (<div>{parameter1} </div> )
}
然后在渲染方法中调用函数
render(){
return (<div className="some class name">
{somefun()}
</div>
)
}
相关文章:
- 如何定义一个模块并使用它来分离js文件
- 将JS分离为多个文件
- 如何使用ngModel将自定义控件的提供程序扩展器分离到Angular 2中的单独文件中
- 网站上的文件分离(在多人项目中)
- 将样式表、javascript和图像分离到不同文件夹中的优势
- 当分离到不同的文件中时,测试失败
- 使用Javascript将数据从文本文件中分离出来
- 节点webkit windows文件系统分离器
- Javascript - 从日志文件中删除/分离时间戳
- 如何在Codeigniter中分离具有PHP标签的JavaScript文件
- 骨干.js:将视图、集合、模型分离到不同的js文件中,它们无法相互识别
- 如何在其他文件中调用 RequireJS 函数?如何分离 RequireJS 文件
- 有没有办法将依赖声明分离到节点/快递中自己的文件中
- 是否可以将javascript代码与Riot Js中的标记文件分离
- 如何将HTML按钮和javascript逻辑分离到不同的文件中
- 分离源自htc文件的事件
- 从主脚本文件中分离数组
- 如何分离文件中的角度模块和需要使用Browserify
- 如何将猫鼬子文档分离为单独的文件
- 发布/订阅后分离文件夹的客户端和服务器的代码