收到新道具后,ReactJS更新视图

时间:2018-10-19 13:09:06

标签: reactjs

几个月不工作后再次安装ReactJS之后,我注意到最新版本(16)现在正在使用getDerivedStateFromProps,并且不再有props函数和东西了。

目前,我的环境中包含react-redux。我的新数据进入了容器脚本的mapStateToProps函数,但是我想相应地更新视图。基本上是一个加载屏幕,在通过API调用获取数据后,请使用API​​的响应数据更新视图。 但是,到目前为止,我似乎还找不到能够更新我的视图的解决方案。

我注意到getDerivedStateFromProps仅被触发一次。

我缺少某些功能吗? 简短示例:

import React from 'react';
import { connect } from "react-redux";

import Files from '../components/files';

class ProjectContainer extends React.Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    this.props.getFilesByShare('sharename');
  }

  componentDidUpdate (prevProps) {
      console.warn('does not get here?');
  }

  render() {
    const { loading, files } = this.props;

    let content = (
      <div className="loading">Loading... Requesting file urls</div>
    );

    if (!loading && files && files.length) {
      content = (
        <div>
          File urls requested!
          <Files files={files} />
        </div>
      );
    }
    return (
      {content}
    );
  }
}

const mapStateToProps = state => {
  console.warn(state, 'this shows the new data');
  return {
    files: state.files,
    loading: state.files_loading,
  };
};

export default connect( mapStateToProps, { 
  getFilesByShare,
}) (ProjectContainer);

0 个答案:

没有答案