React Component 不支持生命周期方法?

Posted

技术标签:

【中文标题】React Component 不支持生命周期方法?【英文标题】:React Component not support lifecycle methods? 【发布时间】:2019-03-02 11:23:07 【问题描述】:

如何在下面的函数中使用生命周期方法,例如 ComponentDidMount?

var React = require('react');

module.exports = function SectionalSquareComponent(props) 


  return (
    <div .....

【问题讨论】:

生命周期是组件/类的一部分,而不是功能组件 ReactJS lifecycle method inside a functional Component 可能重复 【参考方案1】:

如果你想使用生命周期功能,你需要扩展 React.Component 类。正如@xadm 提到的,您不能使用功能组件和生命周期挂钩。

使用问题中的 ES5 语法,可能如下所示:

var createReactClass = require('create-react-class');
module.exports = createReactClass(
  componentDidUpdate: function(prevProps, prevState) 
  ,
  render: function() 
    return (<div>...</div>);
  
);

【讨论】:

【参考方案2】:

正如其他人所说,如果您想挂钩生命周期方法,则需要使用 react.component。

如果您完全专注于功能组件,一个有趣的替代方法是使用recompose.lifecycle 方法,因此您可以这样做(来自文档):

    const PostsList = ( posts ) => (
      <ul>posts.map(p => <li>p.title</li>)</ul>
    )

    const PostsListWithData = lifecycle(
      componentDidMount() 
        fetchPosts().then(posts => 
          this.setState( posts );
        )
      

)(PostsList);

【讨论】:

为什么要导入额外的依赖项来实现这一点,而不是遵循 React 的“方式”让有状态/类组件挂钩到生命周期方法而不是无状态/功能组件? 你不会的,它只是一个有趣的替代品和相对有用的库

以上是关于React Component 不支持生命周期方法?的主要内容,如果未能解决你的问题,请参考以下文章

React Native 中 component 生命周期

React Native 中 component 生命周期

React生命周期函数

React生命周期

2. React组件的生命周期

React之生命周期函数