Я нахожусь в процессе переноса моего приложения в Material UI V4, и я пытаюсь переместить компоненты своего реактивного маршрутизатора Link в обернутые компоненты forwardRef, когда пропеллер 'to' установлен программно.
Приведенный ниже код работает, но требует дублирования вызова forwardRef и построения объекта props, и я предпочел бы выполнять эту работу в функции, которая вызывается один раз с аргументами, но я не могу понять, как это сделать.
const ViewLink = (props, ref) => {
console.log(props);
switch (props.type) {
case 'entities':
return <Link to={`/entities/${props.id}`} {...props} innerRef={ref} />;
case 'templates':
return <Link to={`/templates/${props.id}`} {...props} innerRef={ref} />;
default:
return null;
}
}
<Button
className={classes.buttonFont}
component={React.forwardRef((props, ref) => ViewLink(
{
id: childData.id,
type: type,
...props
},
ref
))}
>
{childData[column]}
</Button>
Есть ли способ создать одну функцию, которая обрабатывает оператор switch и forwardRef? В идеале, то, что называется ниже:
<Button
className={classes.buttonFont}
component={(props) => ViewLink(id, type, props)}
>
{childData[column]}
</Button>