@kenya
В React есть несколько способов передачи данных между компонентами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// Родительский компонент import React from 'react'; import ChildComponent from './ChildComponent'; function ParentComponent() { const name = 'John Doe'; const age = 30; const handleClick = () => alert('Hello from ParentComponent!'); return <ChildComponent name={name} age={age} handleClick={handleClick} />; } // Дочерний компонент import React from 'react'; function ChildComponent(props) { const { name, age, handleClick } = props; return ( <div> <p>Name: {name}</p> <p>Age: {age}</p> <button onClick={handleClick}>Click me!</button> </div> ); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// Создаем контекст import React from 'react'; const MyContext = React.createContext(); // Родительский компонент import React, { useState } from 'react'; import ChildComponent from './ChildComponent'; import MyContext from './MyContext'; function ParentComponent() { const [name, setName] = useState('John Doe'); return ( <MyContext.Provider value={{ name, setName }}> <ChildComponent /> </MyContext.Provider> ); } // Дочерний компонент import React, { useContext } from 'react'; import MyContext from './MyContext'; function ChildComponent() { const { name, setName } = useContext(MyContext); return ( <div> <p>Name: {name}</p> <button onClick={() => setName('Jane Doe')}>Change name</button> </div> ); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// Создаем store import { createStore } from 'redux'; const initialState = { name: 'John Doe', age: 30, }; function reducer(state = initialState, action) { switch (action.type) { case 'CHANGE_NAME': return { ...state, name: action.payload, }; default: return state; } } const store = createStore(reducer); // Родительский компонент import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import ChildComponent from './ChildComponent'; function ParentComponent() { const dispatch = useDispatch(); const { name, age } = useSelector(state => state); const handleClick = () => dispatch({ type: 'CHANGE_NAME', payload: 'Jane Doe' }); return <ChildComponent name={name} age={age} handleClick={handleClick} />; } // Дочерний компонент import React from ' |
@kenya
react';
function ChildComponent({name, age, handleClick}) { return ( Name: {name} Age: {age} Click me! ); }
export default ChildComponent;
1
|
Какой из этих подходов выбрать, зависит от конкретной ситуации и требований вашего проекта. Пропсы подходят для передачи данных между родительскими и дочерними компонентами, контекст может быть полезен для передачи данных к более глубоко вложенным компонентам, а Redux обычно используется для более крупных проектов с большим объемом состояния приложения. |