Ich bekomme einen Fehler beim Weiterleiten an Dashboard-Seite. Der Fehler ist in Navbar-Komponente. Ich habe ReactMeteorData Mixin verwendet. Mein Code istKann die Eigenschaft 'currentUser' von undefined nicht lesen
const ReactMeteorDataWrap = (BaseComponent)=>{
return class ExportClass extends Component {
getMeteorData(){
let data = {};
console.log(Meteor.user()); // shows undefined in console
data.currentUser = Meteor.user();
console.log('data',data);
return data;
}
render(){
return <BaseComponent getMeteor={()=>this.getMeteorData()}
{...this.props}></BaseComponent>
}
}
}
export default ReactMeteorDataWrap;
Navbar.jsx die ReactMeteorData Mixins verwendet
import ReactMeteorDataWrap from '../ReactMeteorDataWrap.jsx';
class Navbar extends Component {
constructor(props){
super(props);
this.state = { searchText: '' };
this.props.getMeteor();
}
//getMeteorData() {
// this.props.getMeteor();
//}
componentDidMount(){
var users = Meteor.users.find({},{fields:{'profile':1}}).fetch();
var usernames = [];
users.map(function(user){
usernames.push(user.profile.fullname);
});
$('#typeahead').typeahead({
name: 'users',
local: usernames
});
}
handleSubmit(e){
e.preventDefault();
FlowRouter.go('/user/' + (this.refs.searchText.value).trim());
}
render() {
var fullname = '';
if(this.data.currentUser && this.data.currentUser.profile){
fullname = this.data.currentUser.profile.firstname + ' ' + this.data.currentUser.profile.lastname; // error is shown here
}
return();
}
export default ReactMeteorDataWrap(Navbar);
ich undefined erhalten, während Meteor.user() in ReactMeteorDataWrap tröstlich und nicht Eigentum 'current' in Navbar.jsx lesen machen Funktion.
oh mein schlecht. Es tut mir leid, bevor ich getMeteorData() in der Navbar-Komponente verwendet habe, ohne irgendeine Mix-Funktion zu verwenden, daher habe ich diese Datei verwendet. Danke für Ihre Hilfe. – milan
ich werde undefiniert, auch nachdem this.props.currentUser. – milan
@milan Das ist, weil 'Meteor.user()' 'undefined' zurückgibt, aber Sie diesen Teil Ihres Codes nicht gepostet haben. Sie sollten überlegen, eine neue Frage mit dem entsprechenden Code zu stellen. – andlrc