React 中使用 render props

React 中使用 render props

前言

這篇也是紀錄了關於學習 react 的過程,起因是因為開始學習 hooks,但是發現好像有些坑比較重要但卻被我跳過了,像是 render props, HOC 等等。這篇就是來補一下 render props 這部分,本篇也相對簡單,所以不會太長就是紀錄一下而已,不過還是算是比較重要的。

正文

官方文檔是這樣給 render props 解釋的:

术语 “render prop” 是指一种在 React 组件之间使用一个值为函数的 prop 共享代码的简单技术

具有 render prop 的组件接受一个函数,该函数返回一个 React 元素并调用它而不是实现自己的渲染逻辑。

反正我自己理解能力差所以總之有點不是非常透徹,所以這篇就是講講 render props 以及我自己對這個東西個人白話的理解。

下面開始用一個例子來講。以下組件負責跟蹤 Web 應用中鼠標的位置:

class MouseTracker extends React.Component {
   
  constructor(props) {
   
    super(props);
    this.handleMouseMove = this.handleMouseMove.bind(this);
    this.state = {
    x: 0, y: 0 };
  }

  handleMouseMove(event) {
   
    this.setState({
   
      x: event.clientX,
      y: event.clientY
    });
  }

  render() {
   
    return (
      <div style={
   {
    height: '100vh' }} onMouseMove={
   this.handleMouseMove}>
        <p>Current mouse position ({
   this.state.x}, {
   this.state.y})</p>
      </div>
    );
  }
}

都很簡單,應該都看得懂,反正就是只要你鼠標動到哪就會顯示在 <p> 中。

那如果今天有一個新的需求:我希望有一個圖片,跟著我的鼠標動到哪圖片就也跟到哪,那該怎麼做呢?

其實也很簡單,首先應該會想把跟蹤鼠標這個行為單獨抽出來成一個組件:

class Mouse extends React.Component {
   
  constructor(props) {
   
    super(props);
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值