当前位置: 首页 > news >正文

网站备案是怎么回事公司已经有域名 怎么建网站

网站备案是怎么回事,公司已经有域名 怎么建网站,环球经贸网,企业管理培训课程推广React 使用 Redux 实现组件通信的 Demo 示例 在 React 项目中,父子组件通信通常依赖 props,兄弟组件通信则通过 状态提升 或 Context。但是当应用逐渐复杂时,这种方式会显得繁琐。此时 Redux 就派上用场了 —— 它可以集中管理全局状态&#…

React 使用 Redux 实现组件通信的 Demo 示例

在 React 项目中,父子组件通信通常依赖 props,兄弟组件通信则通过 状态提升Context。但是当应用逐渐复杂时,这种方式会显得繁琐。此时 Redux 就派上用场了 —— 它可以集中管理全局状态,任何组件都能方便地订阅和修改状态。

本文将带你实现一个简单的 计数器 demo,演示 Redux 在 React 中的组件通信。


一、环境准备

安装必要依赖:

npm install @reduxjs/toolkit react-redux

Redux Toolkit(RTK)是 Redux 官方推荐的写法,简化了很多冗余代码。


二、目录结构

src/store.tsfeatures/counter/counterSlice.tsCounterA.tsxCounterB.tsxApp.tsxindex.tsxhooks.ts

这里我们会写两个兄弟组件:CounterACounterB,通过 Redux 实现通信。


三、配置 Redux Store

src/store.ts

import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "./features/counter/counterSlice";export const store = configureStore({reducer: {counter: counterReducer,},
});export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;

四、定义 Slice(状态逻辑)

src/features/counter/counterSlice.ts

import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import { RootState } from "../../store";interface CounterState {value: number;
}const initialState: CounterState = { value: 0 };const counterSlice = createSlice({name: "counter",initialState,reducers: {increment: (state) => {state.value += 1;},decrement: (state) => {state.value -= 1;},addBy: (state, action: PayloadAction<number>) => {state.value += action.payload;},},
});export const { increment, decrement, addBy } = counterSlice.actions;
export default counterSlice.reducer;// 选择器
export const selectCount = (state: RootState) => state.counter.value;

五、封装 Typed Hooks(TS推荐)

src/hooks.ts

import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux";
import type { RootState, AppDispatch } from "./store";export const useAppDispatch = () => useDispatch<AppDispatch>();
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;

六、兄弟组件通信示例

CounterA.tsx

import React from "react";
import { useAppDispatch } from "../../hooks";
import { increment, addBy } from "./counterSlice";export default function CounterA() {const dispatch = useAppDispatch();return (<div style={{ border: "1px solid #ccc", padding: 10, margin: 10 }}><h3>我是 CounterA</h3><button onClick={() => dispatch(increment())}>+1</button><button onClick={() => dispatch(addBy(5))}>+5</button></div>);
}

CounterB.tsx

import React from "react";
import { useAppSelector } from "../../hooks";
import { selectCount } from "./counterSlice";export default function CounterB() {const count = useAppSelector(selectCount);return (<div style={{ border: "1px solid #ccc", padding: 10, margin: 10 }}><h3>我是 CounterB</h3><p>当前计数:{count}</p></div>);
}

七、应用入口

App.tsx

import React from "react";
import CounterA from "./features/counter/CounterA";
import CounterB from "./features/counter/CounterB";export default function App() {return (<div style={{ padding: 20 }}><h2>Redux 通信 Demo</h2><CounterA /><CounterB /></div>);
}

index.tsx

import React from "react";
import { createRoot } from "react-dom/client";
import { Provider } from "react-redux";
import { store } from "./store";
import App from "./App";const root = createRoot(document.getElementById("root")!);
root.render(<Provider store={store}><App /></Provider>
);

八、运行效果

  1. 点击 CounterA 中的 +1+5 按钮,会触发 Redux 的 dispatch,修改全局状态。
  2. CounterB 会实时响应,展示最新的计数值。

👉 这就实现了 兄弟组件通信,而且随着应用规模扩大,你只需要在需要的地方使用 Redux,不再需要复杂的 props 传递。


九、总结

  • 父子通信:直接用 props。
  • 兄弟通信:Redux 是一种集中化管理方式,适合跨层级或复杂场景。
  • Redux Toolkit 简化了 reducer 和 action 的写法,官方推荐。
  • 在更大规模应用中,还可以结合 Redux Persist(持久化存储)、RTK Query(数据请求管理)。

http://www.dtcms.com/a/613091.html

相关文章:

  • 深圳网站建设黄浦网络网上编程课的哪家好
  • 福州做网站的公html网站免费模板下载
  • 怎么创立网站杭州网站建设公司电话
  • 最精品网站建设在rds上安装wordpress
  • 建站公司兴田德润在哪里深圳app设计
  • 襄阳旅游景点网站建设制作个人免费网站展示设计
  • 做一些网站犯法么企业官网建站步骤
  • 互联网网站开发合同动态效果的网站建设技术
  • 网址的输入格式是什么样的seo关键词推广怎么做
  • 莆田网站建设团队门户网站主要包括哪些模块
  • 西安哪家公司网站做的好页游开服表
  • 重庆建设施工安全管理网站上海 专业网站建设
  • 网站开发 技术投标网站中图片加水印
  • 株洲市哪里有做公司官方网站wordpress主题显示不完整
  • 免费注册自己的网站网页制作课程
  • 湖南网站建设服务洛阳做网站公司
  • 小型的游戏网站怎么做网站全站模板
  • 免费网站推广在线观看网站那个做的比较好
  • 网站制作有哪些创新家校互动平台
  • 做 在线观看免费网站有哪些网页开发流程图
  • 公司网站英文学网站开发学费多少
  • 陕西电商网站建设旅游网站开发与建设论文
  • 嘉兴免费自助建站模板网站怎样做关键词优化
  • 免费的网站推广软件营销型网站建设宣传语
  • 做食品生产的网站佛山网站建站
  • 淄博比较好的网站建设公司做网站 什么语言好
  • 深圳高端做网站公司句容住房和城乡建设局网站
  • 哈尔滨做网站哈尔滨学院装修公司加盟品牌
  • 渭南建设工程招标投标网站定制网络营销计划
  • 想搞网站建设南阳网站营销外包公司