我正在使用Meteor 1.2构建应用程序并做出反应,并使用react-meteor-data mixin从我的发布方法中获取数据。 我认为一个好主意是拥有一个" AppWrapper"具有所有状态和数据订阅的组件,通过props传递给" App"组件,谁将所有组件渲染到层次结构...... 虽然这是有效的,但我希望所有渲染组件都是纯粹的,并且具有不可变数据。 有什么办法可以继续?
1)反应包中已有插件,但我不知道如何使用它?
2)我应该从npm安装它并等待Meteor 1.3软件包系统?
3)是否可以使用一些不可变库来实现自定义的shouldComponentUpdate?
我将非常感谢本主题中的任何想法或经验,谢谢
答案 0 :(得分:1)
1)转到第3点
2)转到第3点
3)当然!例如:Immutable.js
const AppWrapper = React.createClass({
mixins: [ReactMeteor.Mixin],
getMeteorState () {
return {
data: Immutable.Map({
userId: Meteor.userId()
})
};
},
shouldComponentUpdate (nextProps, nextState) {
return !this.state.data.equals(nextState.data);
},
render () {
return (
<App data={this.state.data} />
);
}
});
// This is basic example with pure component.
// Of course this might be another component created with
// React.createClass implementing it's own shouldComponentUpdate method.
const App = ({ data }) => (
<p>Your userId: {data.get('userId')}</p>
);