Je vais montrer deux styles ci-dessous, et vous voudrez choisir en fonction de la relation entre la logique des composants.
Style 1 - Des composants relativement liés peuvent être créés avec des références de rappel, comme ceci, dans ./components/App.js
...
<SomeItem
ref={(instance) => {this.childA = instance}}
/>
<SomeOtherItem
ref={(instance) => {this.childB = instance}}
/>
Et puis vous pouvez utiliser des fonctions partagées entre eux comme ça ...
this.childA.investigateComponent(this.childB);
this.childB.makeNotesOnComponent(this.childA);
Style 2 - Les composants de type Util peuvent être créés comme ceci, dans ./utils/time.js
...
export const getTimeDifference = function (start, end) {
}
Et puis ils peuvent être utilisés comme ça, dans ./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"));
}
}
Lequel utiliser?
Si la logique est relativement liée (elles ne sont utilisées que dans la même application), vous devez partager les états entre les composants. Mais si votre logique est distante (c'est -à- dire, utilitaire mathématique, utilitaire de formatage de texte), alors vous devez créer et importer des fonctions de classe util.