Şu anda bir React uygulamasını TypeScript'e geçiriyorum. Şimdiye kadar, bu oldukça iyi çalışıyor, ancak render
işlevlerimin ve işlev bileşenlerimin dönüş türleriyle ilgili bir sorunum var .
Şimdiye kadar, hep kullanmıştı JSX.Element
bir bileşen karar verirse şimdi bu artık çalışmıyor, dönüş türü olarak değil bir şey, yani geri dönüşü hale null
beri null
hiçbir geçerli bir değerdir JSX.Element
. Bu benim yolculuğumun başlangıcıydı, çünkü şimdi internette arama yaptım ve ReactNode
bunun yerine kullanmanız gerektiğini buldum , bu da null
olabilecek birkaç şeyi ve ayrıca olabilecek birkaç şeyi de içeriyor . Bu daha iyi bir bahis gibi görünüyordu.
Ancak, şimdi bir işlev bileşeni oluştururken, TypeScript türden şikayet ediyor ReactNode
. Yine, biraz araştırdıktan sonra, bunun yerine işlev bileşenleri için kullanmanız gerektiğini buldum ReactElement
. Ancak, bunu yaparsam uyumluluk sorunu ortadan kalktı, ancak şimdi TypeScript yine null
geçerli bir değer olmadığından şikayet ediyor .
Yani, uzun lafın kısası, üç sorum var:
- Ne arasındaki farktır
JSX.Element
,ReactNode
veReactElement
? - Neden
render
sınıf bileşenlerinin yöntemleri geri dönerkenReactNode
, işlev bileşenleri geri dönüyorReactElement
? - Bunu ile ilgili olarak
null
nasıl çözerim ?
class Example extends Component<ExampleProps> {
Sınıflar veconst Example: FunctionComponent<ExampleProps> = (props) => {
işlev bileşenleri gibi bir şeye benzemelidir (buradaExampleProps
beklenen aksesuarlar için bir arayüz bulunur). Ve sonra bu türler, dönüş türünün çıkarılabileceği konusunda yeterli bilgiye sahiptir.