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

国外建设网站的软件北京网站开发品牌

国外建设网站的软件,北京网站开发品牌,怎么推广产品最有效,app定制开发制作React 基础巩固(三十七)——自定义connect高阶组件 一、手撸一个自定义connect高阶组件 import { PureComponent } from react; import store from ../store;/*** connect的参数#xff1a;* 参数一#xff1a; 函数* 参数二#xff1a; 函数* 返…React 基础巩固(三十七)——自定义connect高阶组件 一、手撸一个自定义connect高阶组件 import { PureComponent } from react; import store from ../store;/*** connect的参数* 参数一 函数* 参数二 函数* 返回值 函数*/ export default function connect(mapStateToProps, mapDispatchToProps) {// 返回一个高阶组件本质也是函数return function (WrapperComponent) {class NewComponent extends PureComponent {constructor(props) {super(props);// 将接收到的mapStateToProps赋给state用于部分值修改时的浅层比较、更新statethis.state mapStateToProps(store.getState());}componentDidMount() {this.unsubscribe store.subscribe(() {this.setState(mapStateToProps(store.getState()));});}componentWillUnmount() {this.unsubscribe();}render() {// 将接收到的mapStateToProps、mapDispatchToProps传入要返回的新组件中const stateObj mapStateToProps(store.getState());const dispatchObj mapDispatchToProps(store.dispatch);return (WrapperComponent {...this.props} {...stateObj} {...dispatchObj} /);}}return NewComponent;}; } 二、目前的问题 import store from ../store;从这行代码可以看到目前的connect直接引用了上级目录的store过于依赖目前既定的store这样不利于复用。假设另一个项目的store所在位置不在上级目录中则会出现问题。 三、优化上面的丐版connect 为了让所有人都能使用我们应该把这种“写死”的做法换成让开发者自己传入一个store 构建一个StoreContext用于创建Store的上下文src/hoc/StoreContext.js: import { createContext } from react;export const StoreContext createContext()当我们在项目的index.js中引入connect时引入并使用该上下文让开发者手动传入当前的storesrc/index.js import React from react; import ReactDOM from react-dom/client; import { Provider } from react-redux; import { StoreContext } from ./hoc; import App from ./App; import store from ./store;const root ReactDOM.createRoot(document.getElementById(root)); root.render(// React.StrictModeProvider store{store}StoreContext.Provider value{store}App //StoreContext.Provider/Provider// /React.StrictMode ); 在connect中通过 contextType 共享从 Provider 中传入的 store 变量将原来直接引用的 store 替换成 this.contexthoc/connect.js import { PureComponent } from react; import { StoreContext } from ./StoreContext;/*** connect的参数* 参数一 函数* 参数二 函数* 返回值 函数*/ export function connect(mapStateToProps, mapDispatchToProps) {// 返回一个高阶组件本质也是函数return function (WrapperComponent) {class NewComponent extends PureComponent {constructor(props, context) {super(props);// 将接收到的mapStateToProps赋给state用于部分值修改时的浅层比较、更新statethis.state mapStateToProps(context.getState());}componentDidMount() {this.unsubscribe this.context.subscribe(() {this.setState(mapStateToProps(this.context.getState()));});}componentWillUnmount() {this.unsubscribe();}render() {// 将接收到的mapStateToProps、mapDispatchToProps传入要返回的新组件中const stateObj mapStateToProps(this.context.getState());const dispatchObj mapDispatchToProps(this.context.dispatch);return (WrapperComponent {...this.props} {...stateObj} {...dispatchObj} /);}}// 在类组件中通过 contextType 共享store变量NewComponent.contextType StoreContextreturn NewComponent;}; } 最后在hoc中构建index.js将优化后的connect导出hoc/index.js export { StoreContext } from ./StoreContext; export { connect } from ./connect; 在界面中使用现在优化后的connect import React, { PureComponent } from react; import { connect } from ../hoc; import { addNumber } from ../store/features/counter;export class About extends PureComponent {render() {const { counter } this.props;return (divh2About Counter: {counter}/h2/div);} }const mapStateToProps (state) ({counter: state.counter.counter, });const mapDispatchToProps (dispatch) ({addNumber(num) {dispatch(addNumber(num));}, });export default connect(mapStateToProps, mapDispatchToProps)(About); 查看效果与之前效果一致
http://www.huolong8.cn/news/132073/

相关文章:

  • 郑州电商网站建设免费的素材网站
  • 陶瓷网站模板个人论坛类网站
  • 恩施有做网站的吗网站建设软件下载
  • 网站导航栏修改字体大小wordpress 公园
  • 外围网站怎么做信息系统推广方案
  • 无锡上海网站建设wordpress纯净版下载
  • 网站制作方案费用共享办公室可以注册公司吗
  • 荆州哪个公司做网站wordpress action
  • 教务在线网站开发报告书加强网站建设和信息公开
  • 做直播网站软件有哪些软件强企网做网站
  • 东莞做网站公司有哪些百度文库官网首页
  • 政务公开网站建设要求网站克隆 有后台登录
  • 南宁网站建设哪家公司实力西安网站建设价格低
  • 广西住房城乡建设网站怎么知道这网站是php语言做的
  • 美食网站 原型 html 下载手机移动网站开发
  • 做影视网站引流计算机专业论文 网站建设
  • 中国建设部网站官网罗湖商城网站设计多少钱
  • 莱州 网站制作网站到期查询
  • 广州商务网站建设电话身边的网络营销案例
  • 台州网站建设系统如何设计一个公司的网页
  • 网站的结构是什么样的怎么申请信用卡收款网站接口
  • 容桂网站制作咨询北京网站设计必看刻
  • 建设网站公司 优帮云网站建设需要什么研究条件
  • 网页设计与网站建设考试题目东莞网站建设 牛魔网
  • 做网站卖仿品温州房产信息网
  • 网站模板 htmlwordpress comments.php
  • 网站同步更新到新浪微博电商网站商品页的优化目标是什么
  • 个体户经营范围网站建设网站建设全程揭秘pdf
  • 网站建设公司电话网站建设和维护待遇
  • 长春网站上排名渭南建设厅官网