我只是想知道,为什么在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没有任何充分的理由吗?
感谢您的回答!
答案 0 :(得分:0)
我不是Facebook团队的成员,但我认为这是因为单态。基本上,当函数接受完全相同的参数时,VM不必重新编译该函数。这对React很重要,因为props
和state
变化很大。对单态here有很好的解释。
答案 1 :(得分:0)
React组件和元素是不可变的。当渲染发生时,它已经拥有了类中所需的所有数据,无论是状态还是道具。
您可以在此处阅读https://facebook.github.io/react/docs/rendering-elements.html#updating-the-rendered-element
因此,允许做出反应的是确保在呈现它时它具有组件中存在的所有内容。不必担心传递适当的参数,因为您已经拥有this
范围内的所有可用内容。