ReactJS
Here's a detailed section for my React.js skills covering its features, usecase, and example code snippets.
import React from 'react'; const Greeting = ({ name }) => ( <div> <h1>Hello, {name}!</h1> </div> ); export default Greeting;import React, { useState } from 'react'; const Counter = () => { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}>Click me</button> </div> ); }; export default Counter;import React, { useEffect, useState } from 'react'; const DataFetcher = () => { const [data, setData] = useState(null); useEffect(() => { fetch('https://api.example.com/data') .then(response => response.json()) .then(data => setData(data)); }, []); // Empty dependency array means this effect runs once on mount return ( <div> {data ? <pre>{JSON.stringify(data, null, 2)}</pre> : <p>Loading...</p>} </div> ); }; export default DataFetcher;import React, { createContext, useState, useContext } from 'react'; const ThemeContext = createContext(); const ThemeProvider = ({ children }) => { const [theme, setTheme] = useState('light'); return ( <ThemeContext.Provider value={{ theme, setTheme }}> {children} </ThemeContext.Provider> ); }; const ThemedComponent = () => { const { theme, setTheme } = useContext(ThemeContext); return ( <div style={{ background: theme === 'dark' ? '#333' : '#fff', color: theme === 'dark' ? '#fff' : '#000' }}> <p>The current theme is {theme}</p> <button onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}>Toggle Theme</button> </div> ); }; export { ThemeProvider, ThemedComponent };import React from 'react'; import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom'; const Home = () => <h2>Home Page</h2>; const About = () => <h2>About Page</h2>; const App = () => ( <Router> <nav> <Link to="/">Home</Link> <Link to="/about">About</Link> </nav> <Switch> <Route path="/" exact component={Home} /> <Route path="/about" component={About} /> </Switch> </Router> ); export default App;import React, { useState } from 'react'; const ContactForm = () => { const [form, setForm] = useState({ name: '', email: '' }); const handleChange = (e) => { const { name, value } = e.target; setForm({ ...form, [name]: value }); }; const handleSubmit = (e) => { e.preventDefault(); console.log('Form Submitted:', form); }; return ( <form onSubmit={handleSubmit}> <label> Name: <input type="text" name="name" value={form.name} onChange={handleChange} /> </label> <label> Email: <input type="email" name="email" value={form.email} onChange={handleChange} /> </label> <button type="submit">Submit</button> </form> ); }; export default ContactForm;import React, { Suspense, lazy } from 'react'; const LazyComponent = lazy(() => import('./LazyComponent')); const App = () => ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); export default App;import { render, screen, fireEvent } from '@testing-library/react'; import '@testing-library/jest-dom'; import Counter from './Counter'; test('increments counter on button click', () => { render(<Counter />); fireEvent.click(screen.getByText(/Click me/i)); expect(screen.getByText(/You clicked 1 times/i)).toBeInTheDocument(); });
Last updated