Нельзя создать переменную events
в методе componentDidMount
и получить к ней доступ в методе render
. Вместо этого вы можете непосредственно создать переменную events
в методе рендеринга, поскольку она будет перезапущена, когда ваш запрос fetch
будет выполнен и состояние обновлено.
Также убедитесь, что вы установили eventData
для пустого массива в начальном состоянии, а не для пустого объекта, иначе вы получите ошибку, пытаясь использовать для него метод map
.
export default class EventsPage extends Component {
constructor(props) {
super(props);
this.state = {
eventData: [],
isLoggedin: true
};
}
componentDidMount() {
fetch("http://localhost:5999/events/" + this.props.match.params.userId, {
headers: {
"Content-Type": "application/json"
},
method: "GET",
mode: "cors",
credentials: "include"
})
.then(response => response.json())
.then(data => {
if (data["code"] === 200) {
console.log("OK");
this.setState({
eventData: data.events_data,
isLoggedin: true
});
} else {
console.log("NOT OK");
this.setState({
eventData: data.events_data,
isLoggedin: false
});
}
});
}
render() {
let events = this.state.eventData.map(event => (
<Events
name={event.name}
image_url={event.image_url}
start_time={event.start_time}
end_time={event.end_time}
price={event.price}
age_from={event.age_from}
age_to={event.age_to}
x_coord={event.x_coord}
y_coord={event.y_coord}
status={event.status}
status_id={event.status_id}
members_total={event.members_total}
members_needed={event.members_needed}
owner_id={event.owner_id}
address={event.address}
/>
));
return <>{events}</>;
}
}
def todays_tasks(now = Time.now)
Task.find(:all, :conditions => ["starts_at > ? AND < ?", now.at_beginning_of_day, now.at_end_of_day])
end
Вуаля!
Немного расширяю ответ Августа. В вашей модели Task
вы можете определить метод для извлечения этих задач для вас.
def self.todays_tasks(t = Time.now)
Task.all(:conditions => ["created_at > ? AND created_at < ?", t.at_beginning_of_day, t.tomorrow.at_beginning_of_day])
end
Это помогает сохранить ваш контроллер в скине. Я также сравниваю конец дня с началом завтра. Это гарантирует, что если пользователь создает задание в 23:59:59, оно остается в правильном дне.
Не было бы:
Task.all(:conditions => ["created_at >= ? AND created_at < ?", Time.now.at_beginning_of_day, Time.now.tomorrow.at_beginning_of_day] )
Иначе вы бы никогда не проверили 00:00:00 в день задач, а 11:59:59 - последнее значение в конце дня заданий.