So I did it. I think that these bits might be helpful for someone else, so here’s what I was missing in the component:
This is far from generally useful documentation, but maybe it will help someone if they need it (or maybe I’ll find it next time I need it!).
import { tracked } from '@glimmer/tracking';
...
@tracked myRating
constructor() {
super(...arguments);
this.userRatings = this.args.topic.user_ratings; // Initialize tracked property
if (!this.args.topic.user_ratings) {
return [];
}
const ratingId = this.args.id;
const rating = this.args.topic.user_ratings.find((rating) => Number(rating.rating_id) === Number(ratingId));
this.myRating = rating?.rating_value;
}
....
// and then in the action that changes the value:
this.myRating = Number(newStatus);