Да ничего сложного нет.
Я использую связку react+redux.
Store "Articles" -> REST экшены: запрос на список постов, запрос поста (если надо то на создание/обновление/удаление). У каждого события есть request/success/failure состояние. Просто создаем по 3 константы на каждое событие:
const prefix = '@@ARTICLE/';
export const REQUEST = `${prefix}REQUEST`;
export const RECEIVE_SUCCESS = `${prefix}RECEIVE_SUCCESS`;
export const RECEIVE_FAILURE = `${prefix}RECEIVE_FAILURE`;
такого плана.
Умные компоненты - "контейнеры". Создаем для работы с данными, для списка, например.
Глупые - "компоненты". Для отображения отображения, например непосредственно верстки списка.
Ну и все, при клике по посту -> dispatch(LoadPost(postId)), где:
import { REQUEST, ... и другие нужные константы } from '../constants';
const LoadPost = postId => (dispatch) => {
dispatch({ type: REQUEST, id: postId });
fetch(куда нам надо)
.then(r => r.json())
.then((request) => {
// обработка успеха
})
.catch((ex) => {
// обработка ошибки
})
}
Ну, а анимация легкая: transition на translate и opacity.
Успехов!