So here is my code:
import React, { useState} from ‘react’
import { Meteor } from ‘meteor/meteor’;
Tracker.autorun(() => {
const userId = Meteor.userId()
// ProfileForm is a profile page where the user can update his account settings
// User can also see his saved settings
// All should be editable by the user - so I use Meteor.user().profile
const ProfileForm = () => {
const [userInfo, setUserInfo] = useState({
// Shows user his saved data in form input - results in ( Meteor.user(...) is undefined )
firstName: Meteor.user().profile.firstName,
lastName: Meteor.user().profile.lastName
});
const updateUserInfo = e => {
// Updates userInfo ( firstName & lastName )
setUserInfo({
...userInfo,
[e.target.name]: e.target.value
})
if (userInfo) {
// Update user profile in database
Meteor.users.update(userId, {
$set: {
"profile": userInfo
}
})
}
e.preventDefault()
}
const { firstName, lastName } = userInfo;
return(
<form onSubmit={updateUserInfo}>
<input
value={firstName}
onChange={e => updateUserInfo(e)}
placeholder={userInfo.firstName}
type="text"
name="firstName"
required
/>
<input
value={lastName}
onChange={e => updateUserInfo(e)}
placeholder={userInfo.lastName}
type="text"
name="lastName"
required
/>
<button type="submit">Submit</button>
</form>
)
}
I also tried to use withTracker, but the documentation is quite confusing for me.