以下是withTracker()
函数调用的示例,其中包括在Javascript中使用顺序括号。
export default withTracker(props => {
const handle = Meteor.subscribe('todoList', props.id);
return {
currentUser: Meteor.user(),
listLoading: !handle.ready(),
tasks: Tasks.find({ listId: props.id }).fetch(),
};
})(Foo);
Meteor中React组件的前反应容器是createContainer()
函数,为了与上述相同的目的,它被称为如下所示。
export default FooContainer = createContainer(props => {
const handle = Meteor.subscribe('todoList', props.id);
return {
currentUser: Meteor.user(),
listLoading: ! handle.ready(),
tasks: Tasks.find({ listId: props.id }).fetch(),
};
}, Foo);
这两个功能的执行有什么区别?
答案 0 :(得分:2)
执行时没有区别,因为withTracker
只是createContainer
调用的包装器:
来自here:
const withTracker = fn => C => createContainer(fn, C);
或者,如果您愿意:
function withTracker(fn) {
return function(C) {
return createContainer(fn, C);
}
}
答案 1 :(得分:0)
以下是您可以使用的两种可能的语法,显示传入的函数+变量。
const someContainer = withTracker((props) => ({
someFunction(parms) { ..function code },
someVariable: value,
}))(ComponentName);
或
const someContainer = withTracker((props) => {
const someFunction = (parms) => { ..function code };
const someVariable = value;
return {
someFunction,
someVariable,
}
})(ComponentName);
您通常需要第二个,因为在将它们传递('返回')到组件之前,您将设置数据订阅,但有时当您只想将一些现有内容传递给组件时,第一个“快捷方式”语法很有用。成分