解决渲染道具回调的方法

  介绍

这期内容当中小编将会给大家带来有关解决渲染道具回调的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

简而言之,只要一个组件中某个属性的值是函数,那么就可以说该组件使用了渲染道具这种技术。听起来好像就那么回事儿,那到底呈现道具有哪些应用场景呢,咱们还是从简单的例子讲起,假如咱们要实现一个展示个人信息的组件,一开始可能会这么实现:

 const PersonInfo=道具=比;(
  & lt; div>
  & lt; h2>姓名:{props.name} & lt;/h2>
  & lt;/div>
  );//调用
  & lt; PersonInfo name=& # 39;网络前端& # 39;/祝辞

如果,想要在PersonInfo组件上还需要一个年龄呢,咱们会这么实现:

 const PersonInfo=道具=比;(
  & lt; div>
  & lt; h2>姓名:{props.name} & lt;/h2>
  & lt; p>年龄:{props.age} & lt;/[比;
  & lt;/div>
  );//调用
  & lt; PersonInfo name=& # 39;网络前端& # 39;=& # 39;年龄18 & # 39;/祝辞

然后如果还要加上链接呢,又要在PersonInfo组件的内部实现发送链接的逻辑,很明显这种方式违背了软件开发六大原则之一的开闭原则,即每次修改都要到组件内部需修改。

开闭原则:对修改关闭,对拓展开放。

<强>那有什么方法可以避免这种方式的修改呢?

在原生js中,如果咱们调用函数后,还要做些骚操作,咱们一般使用回调函数来处理这种情况。

在反应中咱们可以使用渲染道具,其实和回调一样:

 const PersonInfo=道具=比;{
  返回props.render(道具);
  }//使用
  
  & lt; PersonInfo
  name=& # 39;网络前端& # 39;=& # 39;年龄18 & # 39;=& # 39;链接链接# 39;
  渲染={(道具)=比;{
  & lt; div>
  & lt; h2> {props.name} & lt;/h2>
  & lt; p> {props.age} & lt;/p>
  & lt; a href=https://www.yisu.com/zixun/眕rops.link“rel="外部nofollow”> 
  
  }}/>

值得一提的是,并不是只有在渲染属性中传入函数才能叫呈现道具,实际上任何属性只要它的值是函数,都可称之为呈现道具,比如上面这个例子把渲染属性名改成孩子的话使用上其实更为简便:

 const PersonInfo=道具=比;{
  返回props.children(道具);
  };
  
  & lt; PersonInfo name=& # 39;网络前端& # 39;=& # 39;年龄18 & # 39;=& # 39;链接链接# 39;比;
  {(道具)=比;(
  & lt; div>
  & lt; h2> {props.name} & lt;/h2>
  & lt; p> {props.age} & lt;/p>
  & lt; a href=https://www.yisu.com/zixun/{props.link}> 
  
  )}   

这样就可以直接在PersonInfo标签内写函数了,比起之前在渲染中更为直观。

所以,反应中的渲染道具你可以把它理解成js中的回调函数。

反应组件的良好设计是可维护且易于更改代码的关键。

从这个意义上说,反应提供了许多设计技术,比如组合,钩子,高阶组件,渲染道具等等。

渲染道具可以有效地以松散耦合的方式设计组件。它的本质在于使用一个特殊的道具(通常称为渲染),将渲染逻辑委托给父组件。

从& # 39;进口鼠标鼠标# 39;;
  函数ShowMousePosition () {
  回报(
  鼠标& lt;
  渲染={
  ({x, y})=比;& lt; div>位置:{x} px, {y} px