在创建React组件时,我应该使用功能组件吗?创建或扩展React.Component
When creating React components should I use functional components, React.createClass or extends React.Component?
我对React很陌生,并且已经阅读了很多关于它的内容。我遇到过三种不同的创建组件的方法:
功能组件:
const Hello = ({world}) => {
return (
<div>{"Hello" + world}</div>
);
}
反应。createClass(工厂):
const Hello = React.createClass({
render: function() {
return <div>{"Hello" + this.props.world}</div>
}
});
ES6类扩展
class Hello extends React.Component {
render() {
return (
<div>{"Hello" + this.props.world}</div>
);
}
}
除了很明显的功能组件没有任何状态与之耦合,并且可能是一个更实用的方法来做组件之外,为什么我要使用不同的方法?
在React文档中,他们使用了这三种方法。有些Stack Overflow文章建议使用Class方法,有些则建议使用Factory方法。
对于无状态的组件,建议使用function。
如果你正在使用ES6+/TypeScript代码,建议使用React.Component
extend。React Native只支持这种类型的组件创建。
React.createClass
用于ES5。
编辑
Facebook向React添加了弃用警告。在React 15.6.0的createClass,并指出用户使用create-react-class
代替。
据我所知,当您只需要创建表示逻辑组件时,建议使用功能组件。对于具有任何逻辑的组件,我们使用smth,如React.createClass()。
有两种方法:
首先,您创建通用组件,然后将其划分为表示逻辑和业务逻辑。
第二个,你可以在旁边创建它们。
小心!在划分这些组件时,您的业务逻辑必须呈现您的表示逻辑!
更多练习参见codecademy
相关文章:
- React重新渲染但未显示正确的组件
- React组件等待所需道具进行渲染
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 如何在react js中移动第二个组件
- 如何在react路由器的组件中使用参数
- React+Redux性能优化与组件ShouldUpdate
- React-将jSON数据传递给子组件的子组件
- React js更改状态不会更新组件
- 加载服务器端渲染的React组件后执行脚本
- React ClickDrag子组件回调
- 如何在渲染函数中检查 react 中子组件的状态
- 以最封装的方式封装/封装ScalaJS react js组件(react stick)
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
- 如何将值从父组件传递到子组件(react)
- 将函数从HOC传递到组件(React, React native)
- 根据屏幕大小以不同的顺序呈现组件(React)