React Class组件使用props和state作为参数呈现函数

时间:2017-06-19 21:44:34

标签: javascript reactjs

我只是想知道,为什么在React Class组件中渲染函数不会获得道具和状态作为它的参数。

class App extends React.Component {
  render({ prop1, prop2 }, { state1, state2 }) {

  }
}

将以我的观点比这更漂亮:

class App extends React.Component {
  render() {
    const { prop1, prop2 } = this.props;
    const { state1, state2 } = this.state;
  }
}

Preact确实传递了props和state来渲染函数。 React没有任何充分的理由吗?

感谢您的回答!

2 个答案:

答案 0 :(得分:0)

我不是Facebook团队的成员,但我认为这是因为单态。基本上,当函数接受完全相同的参数时,VM不必重新编译该函数。这对React很重要,因为propsstate变化很大。对单态here有很好的解释。

答案 1 :(得分:0)

React组件和元素是不可变的。当渲染发生时,它已经拥有了类中所需的所有数据,无论是状态还是道具。

您可以在此处阅读https://facebook.github.io/react/docs/rendering-elements.html#updating-the-rendered-element

因此,允许做出反应的是确保在呈现它时它具有组件中存在的所有内容。不必担心传递适当的参数,因为您已经拥有this范围内的所有可用内容。