我有一个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
。
答案 0 :(得分:4)
您可以使用componentWillReceiveProps
获取新属性并将其设置为组件状态。只要有新属性传递给组件,该函数就会运行:
export class Post extends React.Component {
// ...
componentWillReceiveProps(nextProps) {
this.setState({
...nextProps,
});
}
// ...
}