Javascript 如何在Meteor中使用PureRenderMixin(React js)

Javascript 如何在Meteor中使用PureRenderMixin(React js),javascript,meteor,reactjs,npm,mixins,Javascript,Meteor,Reactjs,Npm,Mixins,我正在用Meteor 1.2和react构建一个应用程序,react Meteor数据混合在一起,从我的发布方法中获取数据。 我认为一个好主意是有一个包含所有状态和数据订阅的“AppWrapper”组件,它通过道具传递给“App”组件,后者将呈现所有组件到层次结构。。。 虽然这是可行的,但我希望所有渲染组件都是纯的,并且具有不可变的数据。 如何进行 1) react包中已经有插件,但我不知道如何使用它 2) 我应该安装它从npm和等待流星1.3包系统 3) 是否可以使用一些不可变的库实现自定义s

我正在用Meteor 1.2和react构建一个应用程序,react Meteor数据混合在一起,从我的发布方法中获取数据。 我认为一个好主意是有一个包含所有状态和数据订阅的“AppWrapper”组件,它通过道具传递给“App”组件,后者将呈现所有组件到层次结构。。。 虽然这是可行的,但我希望所有渲染组件都是纯的,并且具有不可变的数据。 如何进行

1) react包中已经有插件,但我不知道如何使用它

2) 我应该安装它从npm和等待流星1.3包系统

3) 是否可以使用一些不可变的库实现自定义shouldComponentUpdate

我将非常感谢您对本主题的任何想法或经验,谢谢您转到第3点

2) 转到第3点

3) 当然!例如:

const AppWrapper=React.createClass({
Mixin:[ReactMeteor.Mixin],
getMeteorState(){
返回{
数据:Immutable.Map({
userId:Meteor.userId()
})
};
},
shouldComponentUpdate(下一步,下一步状态){
return!this.state.data.equals(nextState.data);
},
渲染(){
返回(
);
}
});
//这是纯组件的基本示例。
//当然,这可能是使用创建的另一个组件
//React.createClass实现自己的shouldComponentUpdate方法。
常量App=({data})=>(
您的用户标识:{data.get('userId')}

);
谢谢,我将尝试这种方式,只剩下3个问题:1)我可以删除react meteor数据包吗,因为我认为它不再必要了?2) 我是否可以只在AppWrapper组件中实现shouldComponentUpdate,并确信所有子组件都将仅在需要时更新?3) 我知道我问过这个场景是否可行,但我也认为这是一个很好的实践,对吗?1)这个包只是一个帮助器,可以将React与Meteor集成。您仍然可以使用它,找到自己获取数据的方法,或者使用不同的包(例如)。2)shouldComponentUpdate只检查实现它的组件。如果你的AppWrapper应该更新,但它没有更新-它也可以实现此方法,并防止不必要的渲染。3)shouldComponentUpdate是一种优化方法(防止不必要的渲染),所以是的-这是一种很好的做法,但请记住:过早优化是万恶之源。1)好,2)如果我只将必要的道具子集传递给孩子们等等,那么最后一次休假只接收一个名为message_id的属性,那么如果包装器应该更新,但是message_id没有更改,那么我假设React和Immutable为我做这项工作?(不更新组件,因为属性没有更改)3)好的,我总是喜欢在性能方面开始思考,但我明白了重点,谢谢!
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>
);