反应,组件之间的差异用扩展类和简单的const =函数创建

sta*_*ave 15 reactjs

在反应教程中:

https://egghead.io/lessons/javascript-redux-react-todo-list-example-filtering-todos

有扩展的主要组件创建:

class TodoApp extends Component {
  render() {
    const visibleTodos = getVisibleTodos(
      this.props.todos,
      this.props.visibilityFilter
    );
    .
    . // Input and Button stuff
    .
Run Code Online (Sandbox Code Playgroud)

而另一个组件只是创建一个包含函数的const:

const FilterLink = ({
  filter,
  children
}) => {
  return (
    <a href='#'
       onClick={e => {
         e.preventDefault();
         store.dispatch({
           type: 'SET_VISIBILITY_FILTER',
           filter
         });
       }}
    >
      {children}
    </a>
  )
}
Run Code Online (Sandbox Code Playgroud)

我看到的差异,首先用类创建一个渲染函数,另一个用于发送回模板的返回函数.

有什么区别?我听说将来只允许使用扩展组件?

Jos*_*eau 23

请参阅:React.createClass与ES6箭头功能

简短的回答是,您希望尽可能多地使用无状态功能组件(SFC); 您的大多数组件应该是SFC.

在以下情况下使用传统Component类:

  • 你需要当地的州(this.setState)
  • 你需要一个生命周期挂钩(componentWillMount,componentDidUpdate,等)
  • 您需要通过refs访问后台实例(例如<div ref={elem => this.elem = elem}>)