Как определяется `this.props` и информация сохраняется в глобальном состоянии Redux - PullRequest
1 голос
/ 09 октября 2019

Я новичок в реагировании и Redux и использую проект реагирования на GitHub: overcode / rovercode-ui для изучения реакции и Redux. У меня есть несколько вопросов по этому поводу.

  1. Для каждого компонента в сгибе component я не могу найти, почему у компонента так много реквизита. Например, для компонента Workspace в конце файла \component\Workspace он проверяет реквизиты компонента Workspace. Интересно, откуда эти реквизиты (а именно, где эти реквизиты определены), например, code реквизиты.
  2. Действие createProgram, определенное в файле \actions\code.js, использует асинхронный POST метод для создания id для вновь созданной программы. Однако в субредукторе \reducers\code.js, когда action.type равен CREATE_PROGRAM_FULFILLED, id будет извлечено из action.payload для сохранения в глобальном состоянии. Итак, как id сохраняется в глобальном состоянии и отправляется действие типа CREATE_PROGRAM_FULFILLED?

Может кто-нибудь помочь мне проанализировать этот проект? Большое спасибо:)

1 Ответ

0 голосов
/ 09 октября 2019

Здравствуйте и добро пожаловать в React - Redux Universe. Я уверен, что вам это понравится, но независимо от вашего уровня подготовки или опыта, вы должны помириться с тем фактом, что существует кривая обучения, и, когда вы особенно новичок в мышлении с точки зрения компонентов, разработка другого мышления требует времени,Не волнуйтесь, мы все были там, и это пройдет. Просто дайте себе немного времени.

Боюсь, даже если мы проведем некоторое время вместе, чтобы проанализировать этот проект, я не думаю, что он облегчит вашу жизнь с точки зрения изучения React или Redux. Анализ этого проекта больше похож на помощь начинающему изучающему иностранный язык в переводе истории. Это может помочь вам понять историю, но в конце вы, вероятно, не сможете написать новую историю на языке, который вы пытаетесь выучить.

Тем не менее, я постараюсь кратко представитьответы на ваши вопросы и попытаться указать, почему анализ этого конкретного проекта не будет столь полезным, как вы ожидаете

1) Чтобы понять, откуда взялись все эти реквизиты, вам необходимо распознать следующую схему

connect(mapStateToProps, mapDispatchToProps)(Workspace))

, поэтому, в основном, благодаря функции connect вы можете напрямую подключить свой компонент к хранилищу резервов (вы называете его глобальным состоянием)

Например, давайте возьмемпосмотрите на следующий фрагмент файла https://github.com/rovercode/rovercode-ui/blob/alpha/src/components/Workspace.js#L36

const mapDispatchToProps = (dispatch, { cookies }) => ({
  updateJsCode: jsCode => dispatch(actionUpdateJsCode(jsCode)),

По сути, благодаря mapDispatchToProps мы возвращаем объект. И поскольку мы используем mapDispatchToProps в качестве параметра функции connect, функция connect берет свойства возвращаемого объекта и передает их компоненту в качестве реквизита.

Благодаря этому в следующей строке https://github.com/rovercode/rovercode-ui/blob/alpha/src/components/Workspace.js#L293 нам удалось бы извлечь updateJsCode из реквизита

Итак, хорошие новости и плохие новости. Чтобы объяснить это вам, мне нужно потратить некоторое время, чтобы построить фундаментальное понимание того, что такое реквизит, что такое компоненты высшего порядка, что такое избыточность, что такое действия и т. Д. И т. Д. Как только вы сначала изучите основы,проще соединить точки.

2) Итак, чтобы ответить на этот вопрос, мне нужно пройти через кодовую базу, чтобы понять архитектуру проекта. Важно помнить, что, несмотря на определенные рекомендации, каждый проект имеет свою собственную структуру данных и архитектуру. Создатель проектов должен принять решение с точки зрения архитектуры компонентов, структуры данных и т. Д. И т. Д. Когда вы новичок и попытаетесь понять технологию, проверив существующие проекты, вы можете запутаться в большом времени и леченииархитектура этих проектов как источник правды.

Мое скромное предложение - прежде всего, попытаться сосредоточиться на React без Redux. Поскольку в большинстве случаев вам может даже не потребоваться управление состоянием в зависимости от масштаба проекта (команда должна принять решение и т. Д.)

Вещи, которые вы, возможно, захотите изучитьРеагируют так: 1) Отношения между родителями, детьми и братьями и сестрами. 2) Реагируйте на API Hook (сравнительно новый, но использование резко возрастает, так что как новый ученик вы должны обязательно взглянуть) 3) Если вы хотите понять какой-то «старый» проект иучебные пособия, которые вы также можете узнать о методах жизненного цикла 4) Что такое презентационный компонент по сравнению с контейнерным компонентом 5) Компоненты высшего порядка

Как только вы освоитесь с основами React, вы можете продолжить с Redux. Бьюсь об заклад, все будет намного проще

Если вам нужно больше предложений, отправьте мне сообщение, чтобы я мог попытаться предоставить вам некоторые ресурсы

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