const element = <h1>Merhaba, dünya!</h1>;
const name = 'John';
const element = <h1>Merhaba, {name}</h1>;
const element = <div className="container">İçerik</div>;
const element = (
<div>
<h1>Başlık</h1>
<p>Paragraf</p>
</div>
);
function Welcome(props) {
return <h1>Merhaba, {props.name}</h1>;
}
class Welcome extends React.Component {
render() {
return <h1>Merhaba, {this.props.name}</h1>;
}
}
function App() {
return (
<div>
<Welcome name="Alice" />
<Welcome name="Bob" />
</div>
);
}
<Welcome name="Alice" age={25} />
function Welcome(props) {
return <h1>Merhaba, {props.name}</h1>;
}
Welcome.defaultProps = {
name: 'Misafir'
};
import PropTypes from 'prop-types';
Welcome.propTypes = {
name: PropTypes.string.isRequired
};
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
render() {
return <div>Sayım: {this.state.count}</div>;
}
}
this.setState({ count: this.state.count + 1 });
this.setState((prevState) => ({
count: prevState.count + 1
}));
class MyComponent extends React.Component {
constructor(props) {
super(props);
// State'i başlat
}
static getDerivedStateFromProps(props, state) {
// Props'a göre yeni state döndür
}
render() {
// Bileşeni render et
}
componentDidMount() {
// Bileşen monte edildi
}
}
class MyComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
// Yeniden render edip etmeyeceğine karar ver
}
render() {
// Bileşeni render et
}
getSnapshotBeforeUpdate(prevProps, prevState) {
// DOM'dan bilgi yakala
}
componentDidUpdate(prevProps, prevState, snapshot) {
// Bileşen güncellendi
}
}
class MyComponent extends React.Component {
componentWillUnmount() {
// Temizlik yap
}
}
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Sayım: {count}</p>
<button onClick={() => setCount(count + 1)}>Arttır</button>
</div>
);
}
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `Tıkladınız: ${count} kez`;
}, [count]);
return (
<div>
<p>{count} kez tıkladınız</p>
<button onClick={() => setCount(count + 1)}>Bana Tıkla</button>
</div>
);
}
import React, { useContext } from 'react';
const ThemeContext = React.createContext('light');
function ThemedButton() {
const theme = useContext(ThemeContext);
return <button className={theme}>Temalı Buton</button>;
}
import React, { useReducer } from 'react';
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, { count: 0 });
return (
<>
Sayım: {state.count}
<button onClick={() => dispatch({ type: 'increment' })}>+</button>
<button onClick={() => dispatch({ type: 'decrement' })}>-</button>
</>
);
}
import React, { useState, useCallback } from 'react';
function ParentComponent() {
const [count, setCount] = useState(0);
const incrementCount = useCallback(() => {
setCount((prevCount) => prevCount + 1);
}, []);
return <ChildComponent onIncrement={incrementCount} />;
}
import React, { useMemo } from 'react';
function ExpensiveComponent({ a, b }) {
const result = useMemo(() => {
// Zorlu hesaplama
return a + b;
}, [a, b]);
return <div>{result}</div>;
}
import React, { useRef } from 'react';
function TextInputWithFocusButton() {
const inputEl = useRef(null);
const onButtonClick = () => {
inputEl.current.focus();
};
return (
<>
<input ref={inputEl} type="text" />
<button onClick={onButtonClick}>Girdiyi Odakla</button>
</>
);
}
function handleClick() {
console.log('Butona tıklandı!');
}
return <button onClick={handleClick}>Bana Tıkla</button>;
function handleClick(id) {
console.log('Tıklanan öğe ID'si:', id);
}
return <button onClick={() => handleClick(42)}>Bana Tıkla</button>;
function Greeting({ isLoggedIn }) {
if (isLoggedIn) {
return <UserGreeting />;
}
return <GuestGreeting />;
}
function Greeting({ isLoggedIn }) {
return (
<div>
{isLoggedIn ? <UserGreeting /> : <GuestGreeting />}
</div>
);
}
function Mailbox({ unreadMessages }) {
return (
<div>
{unreadMessages.length > 0 && (
<h2>Okunmamış mesajlar: {unreadMessages.length}</h2>
)}
</div>
);
}
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li key={number.toString()}>{number}</li>
);
return <ul>{listItems}</ul>;
Anahtarlar, her öğenin benzersiz bir kimliğe sahip olduğunu belirtir. Bu, React'in öğeleri yeniden sıralamasına veya güncellemesine yardımcı olur.
function NameForm() {
const [name, setName] = useState('');
const handleSubmit = (event) => {
event.preventDefault();
console.log('Bir isim gönderildi: ' + name);
};
return (
<form onSubmit={handleSubmit}>
<label>
İsim:
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
/>
</label>
<button type="submit">Gönder</button>
</form>
);
}
Form öğeleri, bileşenin state'i ile kontrol edilir.
const ThemeContext = React.createContext('light');
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
function Toolbar() {
return (
<div>
<ThemedButton />
</div>
);
}
function ThemedButton() {
const theme = useContext(ThemeContext);
return <button className={theme}>Temalı Buton</button>;
}
const inputRef = useRef(null);
const focusInput = () => {
inputRef.current.focus();
};
return (
<>
<input ref={inputRef} type="text" />
<button onClick={focusInput}>Girdiyi Odakla</button>
</>
);
HOC'ler, bileşenlere ekstra özellikler ekleyen fonksiyonlardır.
function withExtraInfo(WrappedComponent) {
return function EnhancedComponent(props) {
return <WrappedComponent extra="ekstra bilgi" {...props} />;
};
}
Render props, bir bileşeni dinamik olarak oluşturmak için kullanılan bir tekniktir.
function DataProvider({ render }) {
const data = fetchData();
return render(data);
}
function App() {
return (
<DataProvider render={(data) => <div>{data}</div>} />
);
}
Portallar, bileşenlerin DOM ağacının farklı bir noktasına render edilmesini sağlar.
function MyModal({ children }) {
return ReactDOM.createPortal(
children,
document.getElementById('modal-root')
);
}
Hata sınırları, JavaScript hatalarını yakalar ve bir yedek UI sunar.
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError() {
return { hasError: true };
}
componentDidCatch(error, info) {
console.log(error, info);
}
render() {
if (this.state.hasError) {
return <h1>Bir şeyler ters gitti.</h1>;
}
return this.props.children;
}
}
Kod bölme, büyük uygulamaları daha yönetilebilir hale getirir.
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<React.Suspense fallback={<div>Yükleniyor...</div>}>
<LazyComponent />
</React.Suspense>
);
}
const style = { color: 'blue', fontSize: '20px' };
function StyledComponent() {
return <div style={style}>Stil Uygulanmış Metin</div>;
}
import styles from './MyComponent.module.css';
function MyComponent() {
return <div className={styles.container}>CSS Modülü Örneği</div>;
}
import styled from 'styled-components';
const StyledDiv = styled.div`
color: blue;
font-size: 20px;
`;
function App() {
return <StyledDiv>Styled Components Örneği</StyledDiv>;
}
const MyComponent = React.memo(function MyComponent(props) {
// Bileşen kodu
});
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
const memoizedCallback = useCallback(() => { /* callback */ }, [dependencies]);
Bileşenleri test etmek için React Testing Library veya Enzyme kullanılabilir.
import { render, screen } from '@testing-library/react';
import MyComponent from './MyComponent';
test('renders the correct text', () => {
render(<MyComponent />);
const linkElement = screen.getByText(/text to be rendered/i);
expect(linkElement).toBeInTheDocument();
});
2024 © Tüm hakları saklıdır - buraxta.com