我正在尝试了解如何使用 isServer / isClient 我的.jsx文件位于imports / ui / components / User / Login.jsx
中我尝试调用Meteor.isServer,Meteor.isClient,但两个值都是未定义的。我是Meteor的新手,无法理解这种行为。
import Meteor from 'meteor/meteor';
import React from 'react';
import ReactDOM from 'react-dom';
export class Login extends React.Component {
onSubmit(){
//code omitted
console.log(Meteor.isClient);
console.log(Meteor.isServer);
}
render() {
return (
<div className="row">
//code omitted
</div>
)
}
}
答案 0 :(得分:4)
我不认为Meteor
是默认导出,因此我认为您需要编写import {Meteor} from 'meteor/meteor'
。
答案 1 :(得分:0)
请记住,在JavaScript中,函数上下文是在调用函数时定义的,而不是在定义函数时定义的。
在您的登录组件中定义(导入)Meteor。但是onSubmit()是一个事件处理程序,可以从许多上下文中调用(取决于你绑定它的方式)。
Meteor对象需要在调用onSubmit()的上下文中可用。
你可以尝试(很难知道没有看到更多代码)是将事件处理程序显式绑定到组件。添加如下构造函数:
constructor(props) {
super(props);
this.onSubmit = this.onSubmit.bind(this);
}
答案 2 :(得分:0)
我在流星1.3之前创建了一些流星应用程序(没什么大不了的),现在一切都改变了。下一个应用程序我将尝试Mantra JS Meteor上的架构框架,他的创建者(Arunoda Susiripala)是一个流星大师,编写了许多有用的软件包。
我为什么这么说?因为Mantra JS定义了应该如何创建客户端和服务器模块,并强制您按照应该导致可维护性,可测试性和代码分离的模式构建应用程序