Это архитектура Flux? - PullRequest
       14

Это архитектура Flux?

0 голосов
/ 26 августа 2018

Вот как я организовывал свои проекты React / Redux, потому что они делали это в учебнике, которому я следовал.Это архитектура Flux, и если нет, то как бы вы ее назвали?

  • Сначала я вызываю функцию в моем компоненте, которая определена в файле действий
  • Эта функция выполняет запрос ajaxчтобы получить информацию из API
  • Затем он запускает создателя действия
  • Редуктор прослушивает создателей действия и, как только один из них обнаружен, выполняет функцию, которая обновляет состояние

Вот пример:

Компонент

class List extends React.Component {
  componentDidMount() {
    this.props.getPosts();
  }
  // etc...
}

const mapStateToProps = state => {
  return {
    posts: state.posts
  };
};

const mapDispatchToProps = dispatch => {
  return {
    getPosts: () => dispatch(actions.getPosts())
  };
};

export default connect(mapStateToProps, mapDispatchToProps)(List);

Действие

const postsLoaded = posts => {
  return {
    type: actionTypes.POSTS_LOADED,
    posts: posts
  };
};

export const getPosts = () => {
  return dispatch => {
    axios
      .get('http://api.something.com/posts', {})
      .then(response => {
        dispatch(postsLoaded(response.posts));
      })
      .catch(e => {
        console.error(e);
      });
  };
};

Редуктор

const setPosts = (prevState, action) => {
  return {
    ...prevState,
    ...action.posts
  };
};

const reducer = (prevState = {}, action) => {
  switch (action.type) {
    case actionTypes.POSTS_LOADED:
      return setPosts(prevState, action);
    default:
      return prevState;
  }
};

export default reducer;

1 Ответ

0 голосов
/ 26 августа 2018

Flux - это шаблон проектирования.Redux - одна из нескольких библиотек, которые реализуют Flux .Цель не в том, чтобы «использовать Redux для реализации Flux», а скорее «использовать шаблон Flux с помощью Redux».

Вы можете найти гораздо лучшее описание в документации ниже, но в простейших терминах:архитектура Flux основана на однонаправленном потоке данных, что означает, что каждая часть получает данные из одного места и выводит изменения в другое.Целью этого шаблона является устранение «кода спагетти», когда различные части приложения передают данные во многих различных направлениях, что в конечном итоге может стать очень трудным для отслеживания.

Другими словами, ваши компоненты являются "Представление "на диаграмме ниже.

  • Хранилище Redux присваивает состояние вашему компоненту
  • Ваш компонент что-то отображает, и когда пользователь выполняет действие, компонент создает действие и дает емудиспетчеру.
  • Диспетчер находит редуктор, который может обработать ваше действие, и выдает результат в хранилище.

И цикл повторяется.

flow architecture Это изображение и подробный обзор Flux можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...