如何在 react-redux 中访问第二个组件中的存储

IT技术 reactjs redux react-redux
2021-05-14 07:33:11

我有一个组件App.js,我尝试使用redux. 在 index.js 中,我只为<App />组件设置存储

索引.js

let store = createStore(scoreReducer);

ReactDOM.render(
  <Provider store={store}><App /></Provider>,
  document.getElementById("root")
);
registerServiceWorker();

我有这个方法App.js可以将状态映射到内部可用的propsApp.js

应用程序.js

function mapStateToProps(state) {
  return { score: state.score, status: state.status };
}

到目前为止一切都很好,现在我不确定如何{ this.props.score}在另一个组件中访问

index.js如果我想{this.props.score}在另一个组件中访问我需要在第二个组件中做哪些更改

2个回答

当您使用 Provider 时,作为 Provider 高阶组件的子组件的任何组件都可以通过使用connect函数访问存储属性

因此,您可以在作为 Provider 子项的任何组件中添加以下内容并访问 score props

function mapStateToProps(state) {
  return { score: state.score, status: state.status };
}

export default connect(mapStateToProps)(MyComponent)

但是,如果这个其他组件是组件的直接子App组件,那么您也可以将score propas aprop从 App传递给该组件,例如

<MyComponent score={this.props.score}/>

Provider组件为其所有子项设置上下文,并在其中提供存储。当您使用高阶组件 (HOC) 时,connect您可以包装任何组件并通过提供的组件访问商店mapStateToPropsmapStateToProps无论它们是如何嵌套的。您也可以使用上下文访问商店,context.store但不建议这样做。使用 map 函数 and connect,类似于你的App组件,是最好的方法。