Я пытаюсь переписать компоненты класса в функции.
Часто у меня есть расширенный компонент как свойство класса:
class Grid extends Component {
tableCell = params => (
<TableCell paging={this.props.paging} {...params} />
)
render() {
return <Table tableCell={this.tableCell} />
}
}
При написании функции я должен перемещать расширение вне тела функции, иначе оно будет перемонтировано при каждом рендере.
const tableCell = params => <TableCell {...params} />
function Grid(props) {
return <Table tableCell={tableCell} />
}
Таблица - это внешний компонент (devexpressGrid), но я предполагаю, что он делает что-то вроде этого:
function Table(props) {
const TableCell = props.tableCell
return <TableCell param1={true} param2={true} />
}
Есть ли способ по-прежнему передавать реквизит из Grid в tableCell? Этот реквизит не исходит из какого-либо редукционного магазина, он дается при рендеринге Grid, например:
return <Grid paging="infinite-scroll" />
Вы можете увидеть различия здесь:
https://codesandbox.io/s/w2y76w53ww?fontsize=14