繁体   English   中英

在React类组件中进行分解

[英]Destructuring in a React Class Component

是否有另一种方法可以在React Class组件中使用ES6解构,而不必在每种方法中都这样做?

我在constructorcomponentDidMount()componentDidUpdate()render()方法中使用了相同的道具( this.prop.page ):

class SinglePage extends React.Component {

  constructor(props) {
    super(props);
    const { page } = this.props;
    //...
  }

  componentDidMount() {
    const { page } = this.props;
    //...
  }

  componentDidUpdate() {
    const { page } = this.props;
    //...
  }

  render() {
    const { page } = this.props;
    return (
     //...
    );
  }
}

exports default SinglePage;

有没有办法做到一次?

是否可以使用带有钩子的最新react版本。 UseEffect将替换didMount和didUpdate,并且也不会使用功能组件来构造函数。 我建议阅读有关useEffect挂钩的本文。 https://overreacted.io/a-complete-guide-to-useeffect/

useEffect可以处理在类组件中使用生命周期方法的情况。 您可以根据需要使用一个或多个。

import React, { useEffect } from React;

function SinglePage({ page }) {

  useEffect(() => {
    // componentDidMount() {
  }, []); // empty array here means it'll only run after the first render

  useEffect(() => {
    // componentDidMount() {
    // componentDidUpdate() {
  }); // no second are means it runs after every render

  useEffect(() => {
    // componentDidMount() {
    // componentDidUpdate() {
  }, [page]); // runs on initial render and whenever `page` changes

  useEffect(() => {
    return () => cancelTheThings(); // componentWillUnMount() {
  }); // return a function from your useEffect function to have it run before unmount

  return {
    //...
  }
}

export default SinglePage;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM