A continuación, mostraré dos estilos y querrá elegir según la relación entre la lógica de los componentes.
Estilo 1: componentes relativamente relacionados se pueden crear con referencias de devolución de llamada, como esta, en ./components/App.js
...
<SomeItem
ref={(instance) => {this.childA = instance}}
/>
<SomeOtherItem
ref={(instance) => {this.childB = instance}}
/>
Y luego puedes usar funciones compartidas entre ellos como este ...
this.childA.investigateComponent(this.childB);
this.childB.makeNotesOnComponent(this.childA);
Estilo 2: los componentes de tipo util pueden crear así, en ./utils/time.js
...
export const getTimeDifference = function (start, end) {
}
Y luego pueden ser usar así, en ./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"));
}
}
¿Cuál usar?
Si la lógica está relativamente relacionada (solo se usan juntos en la misma aplicación), entonces debe compartir estados entre componentes. Pero si su lógica está relacionada de forma distante (es decir, utilidad matemática, utilidad de formato de texto), entonces debe crear e importar funciones de clase util.