所以我正在学习一些教程,但我对使用 HOC 时的渲染方式感到困惑
所以首先,我猜props从父母流向孩子并且是一个方向?
在这里我们创建了两个 HOC,The Aux和withclass
除了传递 props.children 之外,Aux 没有做任何特别的事情
const aux = (props) => props.children;
export default aux;
withClass HOC 函数接受两个参数 App 和 className..
const withClass = (WrappedComponent, className) => {
return class extends Component {
render () {
return (
<div className={className}>
<WrappedComponent {...this.props} />
</div>
)
}
}
我们作为参数传递的 App.js 看起来像这样
import React, { PureComponent } from 'react';
import classes from './App.css';
import Persons from '../components/Persons/Persons';
import Cockpit from '../components/Cockpit/Cockpit';
import Aux from '../hoc/Aux';
import withClass from '../hoc/withClass';
class App extends PureComponent {
//something
render () {
if ( this.state.showPersons ) {
persons = <Persons
persons={this.state.persons}
clicked={this.deletePersonHandler}
changed={this.nameChangedHandler} />;
}
return (
<Aux>
<button onClick={() => { this.setState( { showPersons: true } ) }}>Show Persons</button>
<Cockpit
appTitle={this.props.title}
showPersons={this.state.showPersons}
persons={this.state.persons}
clicked={this.togglePersonsHandler} />
{persons}
</Aux>
);
}
}
export default withClass( App, classes.App );
[问题]所以基于上面的代码,如果有人能解释一下到底发生了什么,事情的执行和呈现方式?
其次,我们{...this.props}
在我们的 withClass HOC 中使用,因为根据指导员他们被包裹,因此我们的其他组件,即使他们收到props他们也不能通过他们。有人可以用一个例子来解释这个吗?还{...this.props}
创建了所有props的副本?并且它不应该是这样 <WrappedComponent = {...this.props} />
,而不是 <WrappedComponent {...this.props} />