У меня есть компонент, который использует два вложенных компонента, основанных на шаблоне рендеринга. Мне нужно объединить реквизиты от обоих из них, чтобы отправить к самой внутренней функции.
<Component1>
{(...props1) => (
<Component2>
{(...props2) => <MyComponent {...props1} {...props2} />}
</Component2>
)}
</Component1>
Теперь я хотел бы преобразовать вышеупомянутые встроенные функции в функции класса, чтобы избежать создания новых функций при каждом рендеринге.
Первая попытка:
render() {
return <Component1>{this._render1}</Component1>;
}
_render1 = (...props1) => <Component2>{this._render2}</Component2>;
_render2 = (...props2) => <MyComponent {...props1} {...props2} />;
Но теперь, в render2
, у меня нет доступа к props1, поэтому я сделал:
render() {
return <Component1>{this._render1}</Component1>;
}
_render1 = (...props1) => <Component2>{this._render2(...props1)}</Component2>;
_render2 = (...props1) => (...props2) => <MyComponent {...props1} {...props2} />;
Но здесь я снова возвращаюсь к первоначальной проблеме воссоздания встроенных функций на каждом рендере (внутри _render2
).
Пожалуйста, предложите способ смягчить эту проблему. Как я могу лучше всего отправить объединенные данные вниз? Что я тут не так делаю?