React Nedir? React Özellikleri Nelerdir?

React, Facebook tarafından geliştirilen kullanıcı ara yüzlerini oluşturmak için kullanılan bir JavaScript kütüphanesidir. Teknik olarak component (element) bazlı, Virtual DOM (Sanal DOM) mimarisini kullanan bir frontend kütüphanesidir.

React

Virtual DOM

Render edilen gerçek DOM’un bir kopyasıdır. State değiştiğinde render edilen DOM’u yeniden oluşturmak yerine bu değişiklik “Sanal DOM” a yansıtılır. Değişen sanal DOM ve gerçek DOM’un farkı alınarak sadece değişen kısımlar render edilir ve böylece her state değişiminde DOM’un yeniden oluşturulmasının önüne geçilir.

JSX

JSX, React tarafından tavsiye edilen ve React elementleri oluşturan bir JavaScript söz dizimi uzantısıdır. Kod yazımını kolaylaştırıp okunabilirliği de artırır fakat performans artışı sağladığı söylenemez. JSX ifadeleri, HTML’den daha çok JavaScript’e yakındırlar ve HTML kodlarının JavaScript içerisinde kullanılmasını sağlar.

Component

Component, uygulamayı tekrar kullanılabilir parçalar haline getirmeyi sağlar ve tekrar eden bir bileşenin bir kere yazılıp her yerde kullanılmasını sağlar. Geriye JSX döndürür ve “Class” ve “Fonksiyon” olarak 2 çeşit component vardır.

1-) Class Component

React kütüphanesindeki Component classından extend olan JavaScript classlarıdır. React Component ‘ten extend olduğu için Component Lifecycle süreçlerini de barındırır.

React Class Component
Class Component

2-) Functional Component

Render metoduna gerek olmadan JSX dönen JavaScript fonksiyonlarıdır.

React Functional Component
Functional Component

State

Componentlerde değer saklamak için kullanılan JavaScript objesidir. Class Componentte doğrudan kullanılırken Functional Componentte ise hooks ile kullanılabilir. State’de bir değişiklik yapmak için setState fonksiyonu kullanılır ve ardından render metodu çalışarak component render edilir.

Props

Parent componentten Child componente aktarılabilen sabit verilerdir ve Child componentte değiştirilemezler. Bu değerlerin değiştirilebilmesi için Parent componentte değiştirilip oranın tekrar render edilmesi gerekmektedir.

Component/Prop Drilling

Proplar sadece Parent componentten Child componente aktarılabildiği için iç içe olan componentlerde en dıştaki componentten en içteki componente propları göndermek için prop tek tek bir içteki componente verilmelidir. Bu işlem “Component Drilling” veya “Prop Drilling” olarak geçmektedir. Bu sorunu çözmek için “Redux” gibi bir global state yönetim kütüphanesi kullanılabilir.

Lifecycle

React Lifecycle
React Lifecycle

ComponentWillMount

Render işleminden hemen önce çalışan event’tir. Yani Component’in gerçek DOM’a aktarılmadan önceki andır.

ComponentDidMount

Render işleminden hemen sonra çalışan event’tir. Yani Component, DOM’a aktarıldıktan sonraki andır.

ComponentWillReceiveProps

Compoentte props değiştirilme işlemi varsa o sırada çalışan event’tir. Render işleminden sonra çalışır.

ShouldComponentUpdate

State veya props değişitiğinde komponent render edilir. Bu event ile ne zaman render edilip edilmeyeceği belirlenir. Eventin geri döndürdüğü bool değere göre (true → render et, false → render etme) render işlemi gerçekleşir. Event kullanılmazsa default değer true olur. NextProps ve nextState adında 2 parametre alır ve bunlar güncellenmiş değerlerdir.

ComponentWillUpdate

ShouldComponentUpdate true değer döndürürse yani component render edilecekse çalışacak olan event. Bu event çalışacaksa önce shouldComponentUpdate sonra componentWillUpdate ve sonra da render çalışır. NextProps ve nextState adında 2 parametre alır.

ComponentDidUpdate

Yine nextProps ve nextState adında 2 parametre alır. ShouldComponentUpdate sonra componentWillUpdate ve sonra da render çalışır ve ardından componentDidUpdate çalışır.

ComponentWillUnmount

Bileşen DOM üzerinden kaldırılmadan hemen önce çalışır.

React Hooks

Class yazmadan fonksiyonlarla state ve lifecycle metotlarının kullanılmasıdır. Class Component içerisinde kullanılamaz, Functional Component içerisinde kullanılması gerekir.

State Hook

useState() bir State Hooktur. Funtional Component içerisinde state kullanmak için idealdir. Bir değişken adı ve bu değerin değiştirilmesi için fonksiyon ismi verilmelidir. UseState’e parametre verilerek değişken için default değer verilebilir. State değerini değiştirmek için belirlenen değiştirme fonksiyonu kullanılmalıdır.

Effect Hook

useEffect bir Effect Hooktur. Class componentlerdeki lifecycle metotlarıyla aynı görevi yapar. Her render işleminden sonra useEffect fonksiyonu çalıştırılır. Ayrıca bir fonksiyon return ederek component unmount olduğunda temizlenmesi istenen işler yapılabilir. Bu metot her render işleminden sonra çalışacağından bunu engellemek için bir dependency array tanımlanarak bu array içinde yer alan değerler her değiştiğinde useEffect fonksiyonu tetiklenir.

Custom Hook

Class componentler arası mantıksal işlemlerin alışverişi high order components (HOC) ve render props ile oluyor. Bunların yerine özel Hooklar kullanılabilir. Böylece kodlar daha kolay okunabilir ve componentler arası etkileşim daha hızlı sağlanır. React, custom hookların fonksiyon isminin “use” ile başlamasını tavsiye ediyor.

--

--

--

Software Engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Mustafa KAPLAN

Mustafa KAPLAN

Software Engineer

More from Medium

React Js | JavaScript Frontend Library

An investigative guide to React JS[DOM, Virtual DOM and JSX] Part-V

React 18 Release Candidate is Released | Learn React 18, it's APIs and SSR Improvements

Programinja | thealiraza | React 18 Release Candidate is finally here.

Instances of a JavaScript button (vanilla JS vs React)