做网站目录百度竞价品牌广告

张小明 2026/1/10 9:21:28
做网站目录,百度竞价品牌广告,建立网站第一步怎么做,小程序开发公司网React组件通信方式总结#xff1a;1#xff09;父传子通过props单向传递数据#xff0c;子组件不能直接修改#xff1b;2#xff09;子传父通过回调函数实现数据传递#xff1b;3#xff09;兄弟组件通过状态提升到共同父组件实现通信#xff1b;4#xff09;跨层组件…React组件通信方式总结1父传子通过props单向传递数据子组件不能直接修改2子传父通过回调函数实现数据传递3兄弟组件通过状态提升到共同父组件实现通信4跨层组件可使用Context机制通过Provider提供数据useContext获取5复杂应用推荐Redux集中状态管理通过createSlice创建reducerProvider注入storeuseSelector和useDispatch操作状态。Redux Toolkit简化了Redux使用流程支持同步/异步操作。父传子父组件通过 props 传递数据给子组件子组件通过 props 接收数据。props 可以传递任意类型的数据包括字符串、布尔值、函数、对象、数组、JSX 等。// 父组件functionParent(){const[value,setValue]useState(父组件传递的数据);return(divChild value{value}//div);}// 子组件functionChild(props:{value:string}){returndiv{props.value}/div;}props 是只读的不能直接修改父组件的数据只能由父组件修改。props children// 父组件 标签嵌套Sonspan我是span标签/span/Son;// 子组件 通过props.children渲染在页面中functionSon(props:{children:React.ReactNode}){return(divh1我是子组件/h1hr/{props.children}/div);}子传父子组件通过 props 传递数据给父组件父组件通过 props 接收数据并传递给子组件。// 父组件functionParent(){const[value,setValue]useState();consthandleChildChange(value:string){setValue(value);};return(divChild onChange{handleChildChange}/p{value}/p/div);}// 子组件functionChild(props:{onChange:(value:string)void}){const[value,setValue]useState();consthandleChange(e:React.ChangeEventHTMLInputElement){setValue(e.target.value);props.onChange(e.target.value);};return(divinput typetextvalue{value}onChange{handleChange}//div);}兄弟组件使用状态提升实现兄弟组件通信即通过共同的父组件传递// 父组件functionParent(){const[value,setValue]useState();consthandleChildChange(value:string){setValue(value);};return(divChild1 onChange{handleChildChange}/Child2 value{value}//div);}// 子组件1functionChild1(props:{onChange:(value:string)void}){const[value,setValue]useState();consthandleChange(e:React.ChangeEventHTMLInputElement){setValue(e.target.value);props.onChange(e.target.value);};return(divinput typetextvalue{value}onChange{handleChange}//div);}// 子组件2functionChild2(props:{value:string}){return(divp{props.value}/p/div);}跨层组件通信——Context 机制// 1. 创建ContextconstMyContextcreateContext();// 2. 顶层组件通过Provider组件提供数据functionParent(){const[value,setValue]useState();consthandleChildChange(value:string){setValue(value);};return(MyContext.Provider value{value}Child1 onChange{handleChildChange}/Child2//MyContext.Provider);}// 3. 子组件通过useContext钩子获取数据functionChild2(){constvalueuseContext(MyContext);return(divp{value}/p/div);}跨层组件通信——Redux 机制 (集中状态管理工具)// 1. 安装// Redux Toolkit是一套工具集用于简化 Redux 的书写方式// react-redux链接React和Redux的中间件npm i reduxjs/toolkit react-redux// 2. 创建slice store/modules/counterStore.jsimport{createSlice}fromreduxjs/toolkit;importaxiosfromaxios;constcounterSlicecreateSlice({name:counter,// 命名空间// 初始化状态initialState:{count:0},// 定义修改状态的方法 同步方法 支持直接修改reducers:{increment(state){state.count;},decrement(state){state.count--;},// 支持传递参数 传递的参数会作为action.payload payload:固定的属性名addToNum(state,action){state.countaction.payload},},});constchannelSlicecreateSlice({name:channel,initialState:{channelList:[]},reducers:{// 获取异步数据setChannel(state,action){state.channelListaction.payload}}})// 解构actioncCreater函数const{increment,decrement,addToNum}counterSlice.actions;const{setChannel}channelSlice.actions;// 发起异步请求constgetChannelList(){returnasync(dispatch){constresawaitaxios.get(http://localhost:3000/channel);dispatch(setChannel(res.data))}}constcountReducercounterSlice.reducer;constchannelReducerchannelSlice.reducer;// 导出方法export{increment,decrement,addToNum,getChannelList};exportdefaultcountReducer;exportdefaultchannelReducer;// 3. 创建store store/index.jsimport{configureStore}fromreduxjs/toolkit;importcounterReducerfrom./counterSlice;importchannelReducerfrom./channelSlice;conststoreconfigureStore({reducer:{counter:counterReducer,channel:channelReducer,},});exportdefaultstore;// 4. 在顶层组件中提供store App.jsimport{Provider}fromreact-redux;importstorefrom./store;createRoot(document.getElementById(root)).render(StrictModeProvider store{store}App//Provider/StrictMode);// 5. 在子组件中获取store中的数据 useSelector映射store中的数据 useDispatch分发actionimport{useSelector,useDispatch}fromreact-redux;import{increment,decrement,addToNum,getChannelList}from./counterSlice;functionCounter(){// 映射store中的数据constcountuseSelector((state)state.counter);constlistuseSelector((state)state.channel);constdispatchuseDispatch();// 触发请求useEffect((){dispatch(getChannelList())},[dispatch])return(divp{count}/pbutton onClick{()dispatch(increment())}/buttonbutton onClick{()dispatch(decrement())}-/button{/* 传参 */}button onClick{()dispatch(addToNum(10))}10/button{/* 数据列表 */}ul{list.map((item)(li key{item.id}{item.name}/li))}/ul/div);}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站宣传页面模板免费设计网站素材

SSH 工具使用与配置全解析 1. sshd 关键字详解 1.1 基本选项 –Q :若缺少 RSA 支持则安静运行。 –t :进入测试模式。 –u length :设置 utmp 结构的长度。 –v :开启详细模式。 –V :打印版本号。 1.2 配置关键字及含义 OpenSSH/Tectia 关键字 值 …

张小明 2026/1/3 0:23:32 网站建设

提供常州微信网站建设门户网站建设管理情况自查报告

技术摘要 Wireshark 4.6.2 是一个维护版本,修复了两个安全漏洞和五个错误。尽管提供的资料未详细说明漏洞的具体性质,但中等严重性评级表明,它们可能在中等程度上影响机密性、完整性或可用性。此次更新还更改了 Windows 安装程序的打包方式&a…

张小明 2026/1/5 16:05:55 网站建设

购物网站app开发多少钱百度助手应用商店下载安装

Python 3 迁移常见陷阱与代码转换指南 1. 元类与方法重定义 在 Python 中,若使用特定元类,当方法被重定义时会报错。示例代码如下: if classdict.multiple:raise TypeError("Multiple definitions exist") return type.__new__(cls, name, bases, classdict)若…

张小明 2025/12/25 8:40:09 网站建设

怎么利用网站做外链接沈阳企业网站建设公司

1.Place布局 place布局是FPGA将设计中的所有逻辑单元放置到FPGA芯片的物理位置上。 这个过程依据设计的逻辑结构,资源需求和芯片的物理不久来完成。这个 阶段的主要任务包括: 任务一:资源分配。用于确定每个逻辑单元位于FPGA的哪个位置 任务二…

张小明 2025/12/25 8:40:07 网站建设

网站怎么排名建站公司怎么赚钱的

Go语言并发编程:原子操作与上下文协调 在Go语言的并发编程中,有许多强大的工具可以帮助我们实现线程安全和高效的并发控制。本文将介绍Go标准库中的原子操作和上下文协调相关的内容。 原子操作 Go语言的 sync/atomic 包提供了一些低级别操作,用于实现线程安全的整数操作…

张小明 2025/12/25 8:40:06 网站建设

网站建设项目运作的可行性佛山找企业的网站

SenseVoice语音识别终极指南:5步实现多语言语音理解实战 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice 想要在30分钟内构建支持50语言的智能语音识别系统?SenseV…

张小明 2026/1/7 16:44:36 网站建设