Реактивные функции (функциональные компоненты) не имеют ни constructor
, ни this
, они не имеют экземпляров. Вы можете использовать хуки useState
и useEffect
для предоставления состояния и описания функций жизненного цикла компонентов.
import React, { useEffect, useState} from 'react';
import { StyleSheet, Text, View } from 'react-native';
import MainService from './App/mainservice';
export default function App() {
const [loaded, setLoaded] = useState(false); // provide initial false state
useEffect(() => {
MainService.load(v => setLoaded(true));
}, []); // empty dependency array analogous to componentDidMount
return (
<View style={styles.container}>
{loaded ? (
<Text>Open up App.js to start working on your app!</Text>
) : (
<Text>Loading...</Text>}
)
</View>
);
}
Если вы хотите сделать это компонент на основе классов, то вот проблемы, которые у вас есть. Вы не можете вызвать setState
в конструкторе, поэтому вам нужно вызвать MainService
в функции жизненного цикла, например componentDidMount
. Кроме того, обработанный JSX необходимо вернуть в функции жизненного цикла render
.
import React, { Component } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import MainService from './App/mainservice';
export default class App extends Component {
constructor() {
super();
this.state ={
loaded:false
}
}
componentDidMount() {
MainService.load(v =>this.setState({loaded:true}));
}
render() {
const { loaded } = this.state;
return (
<View style={styles.container}>
{loaded ? (
<Text>Open up App.js to start working on your app!</Text>
) : (
<Text>Loading...</Text>}
)
</View>
);
}
}