Состояние - это способ реагирования на информацию, содержащуюся в вашем компоненте.
Предположим, что у вас есть компонент, который должен получать некоторые данные с сервера. Обычно вы хотите проинформировать пользователя, если запрос обрабатывается, если он потерпел неудачу и т. Д. Это часть информации, которая подходит только для этого конкретного компонента. Это - то, где государство входит в игру.
Обычно лучший способ определить состояние выглядит следующим образом:
class MyComponent extends React.Component {
constructor() {
super();
this.state = { key1: value1, key2: value2 }
}
}
, но в реализациях latests реагировать native вы можете просто сделать:
class MyComponent extends React.Component {
state = { key1: value1, key2: value2 }
}
Эти два примера выполняются точно так же, это просто улучшение синтаксиса.
Итак, что отличается от того, как просто использовать атрибуты объектов, как мы всегда имеем в программировании OO? Обычно информация, хранящаяся в вашем состоянии, не должна быть статичной, она со временем изменится, и вам необходимо будет обновить View, чтобы отразить эти изменения. Государство предлагает эту функцию простым способом.
State IS MEANT TO IN INTUTABLE! и я не могу сделать этого достаточно. Что это значит? Это означает, что вы НИКОГДА не должны делать что-то вроде этого.
state.key2 = newValue;
Правильный способ сделать это:
this.setState({ key2: newValue });
Использование this.setState ваш компонент запускается через цикл обновления и если какая-либо часть состояния изменится, ваш метод визуализации Component будет вызван снова, чтобы отразить это изменение.
Проверьте реакционные документы для еще более расширенного объяснения: https: //facebook.github .io / реагируют / документы / состояние и-lifecycle.html
Попробуйте передать id вместо объекта, как следует
post :create, params: { user_id: user.id, movie_id: movie.id }
Я думаю, вам вообще не нужно передавать user
или user_id
, поскольку вы не используете его при создании действия. current_user
при создании действия должен вернуть пользователя, в котором вы входите в блок before
.