Вам не нужно иметь componentDidMount в вашем случае. Вы определили функцию внутри метода componentDidMount, и к ней нельзя получить доступ за пределами
Изменение
componentDidMount() {
const fishes = (data) => {
this.setState({ fishes: data });
}
}
К
fishes = data => {
this.setState({ fishes: data });
}
и изменить
const haveAnyFish = () => (
<Subscription subscription={gql`${SUBSCRIPTION_SYNC}`} >
{({ loading, error, data }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :</p>;
return (
<div>
<div>{this.fishes(data)}</div>
</div>
);
}}
</Subscription>
);
К
haveAnyFish = () => (
<Subscription subscription={gql`${SUBSCRIPTION_SYNC}`} >
{({ loading, error, data }) => {
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :</p>;
return (
<div>
<div>{this.fishes(data)}</div>
</div>
);
}}
</Subscription>
);
Вы должны вызывать функцию haveAnyFish в своем компоненте без этого, поэтому после изменения кода выше вам необходимо вызвать функцию haveAnyFish с помощью this.haveAnyFish
Также обратите внимание, что всякий раз, когда вы создаете функции внутри компонента, они не нуждаются в const перед функцией, и если вы хотите получить доступ к состоянию или подпунктам внутри этих функций, вам необходимо вручную связать их или изменить их на функции стрелок