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

网站充值系统怎么做推56论坛

网站充值系统怎么做,推56论坛,做网站公司起什么名字,spoc课程网站建设目录 1,问题描述2,解决方式2.1,Render Props2.2,HOC 3,使用场景 1,问题描述 当使用组件时,标签中的内容,会被当做 props.children 来渲染: 子组件: import…

目录

  • 1,问题描述
  • 2,解决方式
    • 2.1,Render Props
    • 2.2,HOC
  • 3,使用场景

1,问题描述

当使用组件时,标签中的内容,会被当做 props.children 来渲染:

子组件:

import React, { PureComponent } from "react";export default class MyComponent extends PureComponent {state = {x: 0,y: 0,};render() {return <div>{this.props.children}</div>;}
}

父组件使用:

import React from "react";
import MyComponent from "./MyComponent";export default function index() {return (<div><MyComponent><h2>1次使用</h2></MyComponent><MyComponent><h2>2次使用</h2></MyComponent></div>);
}

现在的需求:父组件中如何使用子组件的状态?

2,解决方式

2.1,Render Props

注意到在子组件中默认渲染的是 props.children,那如果像上下文 <ctx.Consumer></ctx.Consumer> 一样,通过函数参数来传递指定内容,就可以解决了。

所以,props.children 变成函数即可

import React, { PureComponent } from "react";export default class MyComponent extends PureComponent {state = {x: 1,y: 2,};render() {return <div>{this.props.children(this.state)}</div>;}
}

使用

import React from "react";
import MyComponent from "./MyComponent";export default function index() {return (<div><MyComponent>{(childrenState) => <h2>{childrenState.x}</h2>}</MyComponent><MyComponent>{(childrenState) => <h2>{childrenState.y}</h2>}</MyComponent></div>);
}

另外,一般这种情况不会用 props.children,而是使用约定俗成的 props.render 来表示。

// 子组件
<div>{this.props.render(this.state)}</div>;// 父组件
<MyComponent render={(childrenState) => <h2>{childrenState.x}</h2>} />

注意,因为子组件 extends PureComponent,所以父组件应该将这个函数单独声明才行,否则每次都会重新渲染。(具体原因看这篇文章)

修改父组件如下:

import React from "react";
import MyComponent from "./MyComponent";const renderA = (childrenState) => <h2>{childrenState.x}</h2>;export default function index() {return (<div><MyComponent render={renderA}></MyComponent></div>);
}

2.2,HOC

高阶组件也能解决这个问题,但相比 Render props 有点繁琐。

import React, { PureComponent } from "react";export default function withState(Comp) {return class MyComponent extends PureComponent {state = {x: 1,y: 2,};render() {return <Comp {...this.props} x={this.state.x} />;}};
}

父组件使用

import React from "react";
import withState from "./withState";function ChildA(props) {return <h2>{props.x}</h2>;
}const ChildStateA = withState(ChildA);export default function index() {return (<div><ChildStateA /></div>);
}

3,使用场景

可以看到,效果类似 vue中作用域插槽 。

所以大多的使用场景:某些组件的各个功能和处理逻辑相同,只是渲染的UI不同


以上。

http://www.tj-hxxt.cn/news/105820.html

相关文章:

  • 手机网站出现广告南京seo代理
  • 自己做国外网站seo优化方案
  • 文档里网站超链接怎么做软文推广例子
  • 衡水网站托管app开发需要多少费用
  • 泛微e8做网站门户链接怎么做
  • 自媒体网站 程序自己可以做网站吗
  • 北京建网站公司飞沐平台优化是什么意思
  • 个人网站建设好之后怎么赚钱百度公司图片
  • 网站重构与web标准设计视频教程沈阳关键词自然排名
  • 淘宝客建设网站推广普通话的宣传标语
  • 网站如何百度收入最好的免费信息发布平台
  • 在西部数码上再备案一个网站ftp南昌网站优化公司
  • 网站设计可以吗爱廷玖达泊西汀
  • 深圳广东网站建设套餐浙江网络推广
  • 网站app下载大全推广网站哪个好
  • 资讯网站优化排名百度云网盘入口
  • 广州市疫情最新通报网站关键词搜索排名优化
  • asp net mvc做网站中文搜索引擎有哪些平台
  • 服装工厂做网站的好处银川seo
  • 江西网站建设技术哪里可以代写软文
  • 宁波网站改版网站之家查询
  • php 网站开发的来源中国十大新闻网站排名
  • 18年手机网站青岛百度推广优化
  • 能够做网站的资质全网网络营销推广
  • 广州做啊里巴巴网站多少钱短网址在线生成
  • amazon日本站官网入口外贸订单一般在哪个平台接
  • 如何自己做淘宝客推广网站竞价托管外包费用
  • 订阅号做微网站需要认证吗备案查询网
  • 织梦怎么做中英文双语网站公司网站怎么优化
  • 石家庄的网站的公司黄石seo