马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 父组件向子组件通信
- // ParentComponent.js
- import React from 'react';
- import ChildComponent from './ChildComponent';
- function ParentComponent() {
- const message = 'Hello from parent!';
- return (
- <div>
- <ChildComponent message={message} />
- </div>
- );
- }
- export default ParentComponent;
- // ChildComponent.js
- import React from 'react';
- function ChildComponent(props) {
- return (
- <div>
- <p>{props.message}</p>
- </div>
- );
- }
- export default ChildComponent;
复制代码 2. 子组件向父组件通信
- // ParentComponent.js
- import React, { useState } from 'react';
- import ChildComponent from './ChildComponent';
- function ParentComponent() {
- const [message, setMessage] = useState('');
- const handleMessage = (msg) => {
- setMessage(msg);
- };
- return (
- <div>
- <ChildComponent onMessage={handleMessage} />
- <p>Message from child: {message}</p>
- </div>
- );
- }
- export default ParentComponent;
- // ChildComponent.js
- import React from 'react';
- function ChildComponent(props) {
- const sendMessage = () => {
- props.onMessage('Hello from child!');
- };
- return (
- <button onClick={sendMessage}>Send Message</button>
- );
- }
- export default ChildComponent;
复制代码 3. 跨级组件通信
- // App.js
- import React, { createContext, useContext } from 'react';
- import GrandParentComponent from './GrandParentComponent';
- const MessageContext = createContext();
- function App() {
- return (
- <MessageContext.Provider value={'Hello from App!'}>
- <GrandParentComponent />
- </MessageContext.Provider>
- );
- }
- export default App;
- // GrandParentComponent.js
- import React from 'react';
- import ParentComponent from './ParentComponent';
- function GrandParentComponent() {
- return (
- <div>
- <ParentComponent />
- </div>
- );
- }
- export default GrandParentComponent;
- // ParentComponent.js
- import React from 'react';
- import ChildComponent from './ChildComponent';
- import { MessageContext } from '../App';
- function ParentComponent() {
- const message = useContext(MessageContext);
- return (
- <div>
- <ChildComponent message={message} />
- </div>
- );
- }
- export default ParentComponent;
- // ChildComponent.js
- import React from 'react';
- function ChildComponent(props) {
- return (
- <div>
- <p>{props.message}</p>
- </div>
- );
- }
- export default ChildComponent;
复制代码 4. 使用 Redux 进行全局状态管理
- // store.js
- import { createStore } from 'redux';
- const initialState = {
- message: '',
- };
- function rootReducer(state = initialState, action) {
- switch (action.type) {
- case 'SET_MESSAGE':
- return { ...state, message: action.payload };
- default:
- return state;
- }
- }
- const store = createStore(rootReducer);
- export default store;
- // App.js
- import React from 'react';
- import { Provider } from 'react-redux';
- import store from './store';
- import ComponentA from './ComponentA';
- function App() {
- return (
- <Provider store={store}>
- <ComponentA />
- </Provider>
- );
- }
- export default App;
- // ComponentA.js
- import React, { useEffect } from 'react';
- import { useSelector, useDispatch } from 'react-redux';
- function ComponentA() {
- const message = useSelector(state => state.message);
- const dispatch = useDispatch();
- useEffect(() => {
- dispatch({ type: 'SET_MESSAGE', payload: 'Hello from ComponentA!' });
- }, []);
- return (
- <div>
- <p>{message}</p>
- </div>
- );
- }
- export default ComponentA;
- // ComponentB.js
- import React, { useEffect } from 'react';
- import { useSelector, useDispatch } from 'react-redux';
- function ComponentB() {
- const message = useSelector(state => state.message);
- return (
- <div>
- <p>{message}</p>
- </div>
- );
- }
- export default ComponentB;
复制代码 5. 使用 Refs 进行组件间通信
- // ParentComponent.js
- import React, { useRef } from 'react';
- import ChildComponent from './ChildComponent';
- function ParentComponent() {
- const childRef = useRef(null);
- const triggerMethod = () => {
- childRef.current.childMethod();
- };
- return (
- <div>
- <button onClick={triggerMethod}>Trigger Child Method</button>
- <ChildComponent ref={childRef} />
- </div>
- );
- }
- export default ParentComponent;
- // ChildComponent.js
- import React from 'react';
- class ChildComponent extends React.Component {
- childMethod = () => {
- console.log('Called from ParentComponent');
- };
- render() {
- return <div>Child Component</div>;
- }
- }
- export default ChildComponent;
复制代码 6. 使用 Event Emitters 进行组件间通信
- // EventEmitter.js
- import Emitter from 'tiny-emitter/instance';
- const eventEmitter = new Emitter();
- export default eventEmitter;
- // ComponentC.js
- import React, { useEffect } from 'react';
- import eventEmitter from './EventEmitter';
- function ComponentC() {
- useEffect(() => {
- const handleEvent = (data) => {
- console.log('Received data:', data);
- };
- eventEmitter.on('my-event', handleEvent);
- return () => {
- eventEmitter.off('my-event', handleEvent);
- };
- }, []);
- return <div>Component C</div>;
- }
- export default ComponentC;
- // ComponentD.js
- import React, { useEffect } from 'react';
- import eventEmitter from './EventEmitter';
- function ComponentD() {
- useEffect(() => {
- eventEmitter.emit('my-event', 'Hello from ComponentD!');
- }, []);
- return <div>Component D</div>;
- }
- export default ComponentD;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |