Я покажу два стилі нижче, і ви захочете вибрати, залежно від того, наскільки логіка компонентів пов’язана між собою.
Стиль 1 - Відносно пов'язані компоненти можна створити за допомогою посилань зворотного виклику, наприклад, у ./components/App.js
...
<SomeItem
ref={(instance) => {this.childA = instance}}
/>
<SomeOtherItem
ref={(instance) => {this.childB = instance}}
/>
І тоді ви можете використовувати спільні функції між ними, як це ...
this.childA.investigateComponent(this.childB);
this.childB.makeNotesOnComponent(this.childA);
Стиль 2 - Компоненти типу Util можна створити таким чином, у ./utils/time.js
...
export const getTimeDifference = function (start, end) {
}
І тоді їх можна використовувати ось так, у ./components/App.js
...
import React from 'react';
import {getTimeDifference} from './utils/time.js';
export default class App extends React.Component {
someFunction() {
console.log(getTimeDifference("19:00:00", "20:00:00"));
}
}
Яким користуватися?
Якщо логіка відносно пов’язана (вони використовуються лише разом в одному додатку), то вам слід обмінюватися станами між компонентами. Але якщо ваша логіка пов'язана віддалено (тобто math util, util для форматування тексту), тоді вам слід створювати та імпортувати функції класу util.