Используя Redux, может ли какой-либо компонент получить и установить (по действию) какие-либо данные в хранилище? - PullRequest
0 голосов
/ 13 февраля 2020

Используя Redux, это правда, что любой компонент и подкомпонент на странице получают все данные одного-единственного хранилища и могут отправлять любые действия вообще, даже если это не предназначено для этого компонента отправить?

Могут ли все компоненты использовать

const store = createStore(mainReducer);
let state = store.getState();

и иметь возможность видеть все состояния всего приложения? Может ли какой-либо компонент отправить какое-либо действие всем всем? Так, например, если есть компонент Counter и компонент Comment, может ли компонент Comment случайно отправить действие "INCREASE_COUNT"?

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Для большей части вашего вопроса, кажется, ответ Да.

Да, компоненты могут получить доступ ко всему хранилищу (на которое оно подписано) и могут при необходимости отправлять действия. Я не думаю, что есть какой-то способ, которым вы можете поставить action / store за некоторые ограничения.

can the Comment component accidentally send out an "INCREASE_COUNT" action? Да, если вы попытаетесь отправить его снова из дочернего компонента.

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

Надеюсь, это поможет вам!

1 голос
/ 13 февраля 2020

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

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

import { connect } from "react-redux";

// Your component

export default connect(mapStateToProps, dispatchActionToProps);

// the component will only have access to the store props and actions that you specify
// in mapStateToProps and dispatchActionToProps

const mapStateToProps = state => {
  return {
  // state is the result of combineReducers
  // whatevery key the component needs you can specify here
  };
}

const dispatchActionToProps = dispatch => {
  return {
  // your store actions 
  };

}
1 голос
/ 13 февраля 2020

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

То же самое касается действий. Вы также должны отобразить действия - какой компонент может отправлять какое действие, когда вы «подключаетесь» к магазину.

Проверьте это для получения дополнительной информации - https://redux.js.org/basics/usage-with-react

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