Вы можете использовать первый метод, может быть, но тогда вы должны передать хранилище каждому другому компоненту в будущем.Выполнение этого вручную - большая работа, но кроме этого это усложняет задачу, например, тестирование и т. Д.
Provider
не является частью Redux
, но поставляется с react-redux
для создания вещей.Полегче.Вы оборачиваете свой компонент им, и он проходит весь магазин вниз.react-redux
также обеспечивает функцию connect
.Вы используете его в компонентах везде, где вы хотите связаться с вашими диспетчерами действий и вашим состоянием.
Итак, вы можете легко увидеть, что использование компонента Provider
является практически стандартом де-факто.Поэтому, вероятно, вы хотите использовать его и не беспокоиться о том, чтобы вручную выполнить store.subscribe
и передать свой магазин другим компонентам.Итак, если вы используете Provider
, вы не будете использовать store.subscribe
.
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
Затем, в другом компоненте, где вы хотите использовать положительные герои приставки:
const Component = ...
const mapStateToProps = (state) => ({
value: state.someValueFromState
});
const mapDispatchToProps = { action, otherAction };
export default connect(
mapStateToProps,
mapDispatchToProps
// or you can use action creators directly instead of mapDispatchToProps
// { action, otherAction }
)(Component);
Затем вы можете использовать создателей ваших действий и значения состояний в качестве реквизита в Component
.