React面试题

## 面试

* 怎么解决 css 命名冲突

    1. css-module

    2. css in js

    3. react-css-modules / styleName(我们用的)

* 怎么让一个元素 上下左右居中 (3种)

    1.

      display: flex; // 设置 flex 必须要设置父元素

      justify-content: center; // x 轴居中

      align-items: center; // y 轴居中

* 错误边界

class ErrorBoundary extends React.Component {

  constructor(props) {

    super(props);

    this.state = {

      errorInfo: null

    };

  }

  

  static getDerivedStateFromError (error) {

    console.log(error, 'error2222222');

    // 更新 state 使下一次渲染可以显示降级 UI

    return { errorInfo: true }

  }



  // 报错

  componentDidCatch(error, errorInfo) {

    // 请求后台接口 把错误上报

    console.log(errorInfo, 'errorInfo');

    console.log(error, 'error');

  }

  

  render() {

    if (this.state.errorInfo) {

      return (

        <div>

          错误替代展示

        </div>

      );

    }



    return this.props.children;

  }  

}

* useEffect 可以模拟哪些生命周期

    1. componentDidMount // 加载完成的

    2. componentDidUpdate // 更新阶段

    3. componentWillUnmount // 卸载阶段

* useRef 和  createRef 区别

     useRef 只执行一次,有初始值,可以用于保存上一次的值

     createRef 每次组件渲染都会执行,没有初始值

* setInterval, setTimeout 特性

  const [time, setTime] = useState(3)

  useEffect(() => {

    // setInterval, setTimeout 会形成闭包,会保存 time 的复制值,该值与外面的 time

    // 不是同一个值

    setInterval(() => {

      setTime(time - 1)

      // 始终输出 3

      console.log(time, 'xxx');

    }, 1000)

  }, [])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值