Poniżej pokażę dwa style i będziesz chciał wybrać w zależności od tego, jak bardzo logika składników jest ze sobą powiązana.
Styl 1 - Względnie powiązane komponenty można tworzyć z odwołaniami zwrotnymi, takimi jak ten, w ./components/App.js...
<SomeItem
ref={(instance) => {this.childA = instance}}
/>
<SomeOtherItem
ref={(instance) => {this.childB = instance}}
/>
A potem możesz używać wspólnych funkcji między nimi w ten sposób ...
this.childA.investigateComponent(this.childB);
this.childB.makeNotesOnComponent(this.childA);
Styl 2 - Komponenty typu użytkowego można tworzyć w ten sposób w ./utils/time.js...
export const getTimeDifference = function (start, end) {
}
A potem mogą być używane w ten sposób, w ./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"));
}
}
Którego użyć?
Jeśli logika jest względnie powiązana (są używane tylko razem w tej samej aplikacji), należy udostępniać stany między komponentami. Ale jeśli twoja logika jest odlegle powiązana (np. Narzędzie matematyczne, narzędzie do formatowania tekstu), powinieneś utworzyć i zaimportować funkcje klasy util.