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

时间:2016-01-31 15:18:54

标签: javascript meteor reactjs npm mixins

我正在使用Meteor 1.2构建应用程序并做出反应,并使用react-meteor-data mixin从我的发布方法中获取数据。 我认为一个好主意是拥有一个" AppWrapper"具有所有状态和数据订阅的组件,通过props传递给" App"组件,谁将所有组件渲染到层次结构...... 虽然这是有效的,但我希望所有渲染组件都是纯粹的,并且具有不可变数据。 有什么办法可以继续?

1)反应包中已有插件,但我不知道如何使用它?

2)我应该从npm安装它并等待Meteor 1.3软件包系统?

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

我将非常感谢本主题中的任何想法或经验,谢谢

1 个答案:

答案 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>
);