如何在 Meteor 中使用 PureRenderMixin (React js)
How to use PureRenderMixin (React js) in Meteor
我正在使用 Meteor 1.2 构建一个应用程序并做出反应,并使用 react-meteor-data mixin 从我的发布方法中获取数据。
我认为一个好主意是拥有一个包含所有状态和数据订阅的 "AppWrapper" 组件,它通过 props 传递给 "App" 组件,后者将把所有组件渲染到层次结构......
虽然这可行,但我希望所有渲染组件都是纯净的并且具有不可变数据。
如何进行?
1)react包里已经有addon了,不知道怎么用?
2) 我应该从 npm 安装它并等待 Meteor 1.3 包系统?
3) 是否可以使用一些不可变的库来实现自定义的 shouldComponentUpdate?
我将感谢有关此主题的任何想法或经验,谢谢
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>
);
我正在使用 Meteor 1.2 构建一个应用程序并做出反应,并使用 react-meteor-data mixin 从我的发布方法中获取数据。 我认为一个好主意是拥有一个包含所有状态和数据订阅的 "AppWrapper" 组件,它通过 props 传递给 "App" 组件,后者将把所有组件渲染到层次结构...... 虽然这可行,但我希望所有渲染组件都是纯净的并且具有不可变数据。 如何进行?
1)react包里已经有addon了,不知道怎么用?
2) 我应该从 npm 安装它并等待 Meteor 1.3 包系统?
3) 是否可以使用一些不可变的库来实现自定义的 shouldComponentUpdate?
我将感谢有关此主题的任何想法或经验,谢谢
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>
);