Mostrerò due stili di seguito e dovrai scegliere in base a quanto la logica dei componenti è correlata tra loro.
Stile 1 - È possibile creare componenti relativamente correlati con riferimenti di richiamata, come questo, in ./components/App.js
...
<SomeItem
ref={(instance) => {this.childA = instance}}
/>
<SomeOtherItem
ref={(instance) => {this.childB = instance}}
/>
E poi puoi usare le funzioni condivise tra di loro in questo modo ...
this.childA.investigateComponent(this.childB);
this.childB.makeNotesOnComponent(this.childA);
Stile 2 - I componenti di tipo Util possono essere creati in questo modo, in ./utils/time.js
...
export const getTimeDifference = function (start, end) {
}
E poi possono essere usati in questo modo, in ./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"));
}
}
Quale usare?
Se la logica è relativamente correlata (vengono utilizzati solo insieme nella stessa app), è necessario condividere gli stati tra i componenti. Ma se la tua logica è lontanamente correlata (cioè, matematica util, util di formattazione del testo), allora dovresti creare e importare funzioni di classe util.