内容简介:直接把组件当做一个
-
1、使用
createClass
方式创建(已经被淘汰了) -
2、类组件
import React, { Component } from 'react' export default class Components1 extends Component { render() { return <div /> } } 复制代码
-
3、函数组件(比较推荐的方式)
import React from 'react' function Child(props) { return <></> } export default () => { return ( <> <Child /> </> ) } 复制代码
二、组件的调用方式(使用 children
)
直接把组件当做一个 DOM
节点,在里面写内容,在该组件中使用 childrend
进行渲染
-
1、简单的引用
import React from 'react' function Child(props) { return <>我是child组件</> } export default () => { return ( <> <Child /> </> ) } 复制代码
-
2、组件中传递
html
代码import React from 'react' function Child(props) { console.log(props) return ( <> <p>我是child组件</p> {props.children} </> ) } export default () => { return ( <> <Child> {/* 在组件中直接写内容可以传递到该组件的children上 */} <h1>我是父组件传递进去的</h1> <h2>我是父组件传递进去的内容二</h2> </Child> </> ) } 复制代码
-
3、传递一个组件进去
import React from 'react' function Parent(props) { return ( <> <p>我是Parent组件</p> {props.children} </> ) } function Child(props) { return ( <> <p>我是Child组件</p> </> ) } export default () => { return ( <> <Parent> <Child /> </Parent> </> ) } 复制代码
-
4、组件中传递一个函数进去
import React from 'react' function Child(props) { return ( <> <p>我是child组件</p> {props.children({ name: '哈哈', gender: '男' })} </> ) } export default () => { return ( <> <Child> {args => { console.log(args) return <div id="child">{args.name}</div> }} </Child> </> ) } 复制代码
三、 render props
的使用参考文档
主要作用点
-
1、使用
Render Props
解决来横切关注点(组件的复用[复用组件内部一些逻辑]) -
2、
Render prop
是一个用于告知组件需要渲染什么内容的函数prop
与传统组件的props
有点类似,只是希望渲染的是一个组件或者一个DOM
节点 -
3、
Render props
主要用于组件代码的复用
代码案例
-
1、使用
render props
渲染一个DOM
节点import React from 'react' export default function Render03() { return ( <div> <Child render={props => { // 可以接收render函数里面的参数 console.log(props) return ( <div style={{ color: '#f90' }}> 我是渲染出来的--{props.name}--{props.gender} </div> ) }} /> </div> ) } function Child(props) { return ( <> <h1>我是child组件</h1> {/* render里面传递参数,真正渲染的地方接收参数 */} {props.render({ name: '张三', gender: '男' })} </> ) } 复制代码
-
2、使用
render props
渲染一个组件import React from 'react' export default function Render04() { return ( <div id="render04"> <Child1 render={props => <Child2 {...props} />} /> </div> ) } function Child1(props) { return ( <> <h2>我是child1组件</h2> {props.render({ name: '张三', gender: '男' })} </> ) } function Child2(props) { console.log(props) return ( <> <h2>我是child2组件</h2> <h3>{props.name}</h3> </> ) } 复制代码
-
3、使用
render props
达到组件的复用import React, { useState } from 'react' export default function Render05() { return ( <div> <Mouse render={props => { return <Cat {...props} /> }} /> <Mouse render={props => { console.log(props) return ( <div style={{ width: '100px', height: '100px', background: '#f90', position: 'absolute', top: props.y - 50, left: props.x - 50 }} /> ) }} /> </div> ) } function Cat(props) { return ( <div> <div style={{ position: 'absolute', width: '100px', height: '100px', background: '#f00', cursor: 'move', left: props.x - 50, top: props.y - 50 }} /> </div> ) } function Mouse(props) { const [location, setLocation] = useState({ x: 0, y: 0 }) const handleMouseMove = event => { setLocation({ x: event.clientX, y: event.clientY }) } return ( <div style={{ height: '100%' }} onMouseMove={handleMouseMove}> {props.render(location)} </div> ) } 复制代码
以上所述就是小编给大家介绍的《React16.8中关于children和render props的认知》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都是架构师:分布式系统架构落地与瓶颈突破
高翔龙 / 电子工业出版社 / 2017-5 / 69
《人人都是架构师:分布式系统架构落地与瓶颈突破》并没有过多渲染系统架构的理论知识,而是切切实实站在开发一线角度,为各位读者诠释了大型网站在架构演变过程中出现一系列技术难题时的解决方案。《人人都是架构师:分布式系统架构落地与瓶颈突破》首先从分布式服务案例开始介绍,重点为大家讲解了大规模服务化场景下企业应该如何实施服务治理;然后在大流量限流/消峰案例中,笔者为大家讲解了应该如何有效地对流量实施管制,避......一起来看看 《人人都是架构师:分布式系统架构落地与瓶颈突破》 这本书的介绍吧!