面试题

109 阅读1分钟

什么是高阶组件,你能用Hoc做什么?

一个高阶组件只是一个包装了另外一个 React 组件的 React 组件
可以用来做:

  • 渲染劫持
  • state更新与修改
  • props修改

什么是纯组件

React.PureComponent在内部通过shouldComponentUpdate浅层对比了props和state 使用方法如下:
父组件中使用:

import React from 'react'
import ReactDOM from 'react-dom'
 
/* 
  组件性能优化:
*/
 
// 生成随机数
class App extends React.PureComponent {
  state = {
    number: 0
  }
  handleClick = () => {
    this.setState(() => {
      return {
        number: Math.floor(Math.random() * 3)
      }
    })
  }
 
  render() {
    console.log('父组件中的render')
    return (
      <div>
        <h1>随机数:{this.state.number}</h1>
        <button onClick={this.handleClick}>重新生成</button>
      </div>
    )
  }
}
 
ReactDOM.render(<App />, document.getElementById('root'))

子组件中使用:


import React from 'react'
import ReactDOM from 'react-dom'
 
/* 
  组件性能优化:
*/
 
// 生成随机数
class App extends React.Component {
  state = {
    number: 0
  }
 
  handleClick = () => {
    this.setState(() => {
      return {
        number: Math.floor(Math.random() * 3)
      }
    })
  }
 
  render() {
    return (
      <div>
        <NumberBox number={this.state.number} />
        <button onClick={this.handleClick}>重新生成</button>
      </div>
    )
  }
}
 
class NumberBox extends React.PureComponent {
  render() {
    console.log('子组件中的render')
    return <h1>随机数:{this.props.number}</h1>
  }
}
 
ReactDOM.render(<App />, document.getElementById('root'))

什么是redux,redux遵循的三个原则是什么

redux:状态管理模式。react可以使用redux来进行复杂数据的管理。
react的三个原则:

  • 单一状态原则,整个应用的状态存在一个对象的strore中
  • 状态只读原则,状态的更改只能通过dispatch进行触发
  • reducer必须是纯函数,状态的输出至于状态的输入有关,其他无关

什么是redux-thunk,redux-thunk的作用?

redux是一个可以让store.dispatch接收一个函数或者对象,方便请求处理

在生命周期中的哪一步你应该发起 AJAX 请求

componentDidMount