Meteor React Komposer:准备好订阅后执行组件构造函数

时间:2017-02-08 07:36:04

标签: reactjs meteor

我有一个React组件发布

export class Post extends React.Component {
  constructor(props) {
     this.state = this.props;
  }
  ...
}

,我用

撰写
import { composeWithTracker } from 'react-komposer';

从' react-komposer'中导入{composeWithTracker}; 从' ../ components / post.jsx';

导入帖子
function composer(props, onData) {
  const subscription = Meteor.subscribe('post', props.postId);

  if (subscription.ready()) {
    const data = {
      ready: true,
      posts: Posts.findOne(props.postId).fetch()
    }
    onData(null, data);
  } else {
    onData(null, {ready: false});
  }
}

export default composeWithTracker(composer)(Post);

。正如在 Post Component 中给出的,我想在组件的状态中放置一些属性,但是在从composer获取数据之前构造函数将被执行

如何等待数据发送,然后将props放入state

这不是 React Kompose 应该做的吗?顺便说一下,我使用版本1.~来获取composeWithTracker

1 个答案:

答案 0 :(得分:4)

您可以使用componentWillReceiveProps获取新属性并将其设置为组件状态。只要有新属性传递给组件,该函数就会运行:

export class Post extends React.Component {
  // ...
  componentWillReceiveProps(nextProps) {
    this.setState({
      ...nextProps,
    });
  }
  // ...
}