默认情况下将ownProps传递给组件吗?

时间:2020-05-18 12:16:41

标签: reactjs redux react-redux

我的摘要如下。

AnotherFile.js

import MyAccount from './MyAccount';

<MyAccount name='peace and love' />



MyAccount.js

const MyAccount = (props) => {
  // I can access props.isLoggedIn and props.setLogout, 
  // and I can access props.name too, wow
}

const mapStateToProps = (state) => ({
  isLoggedIn: state.isLoggedIn
})

const mapDispatchToProps = dispatch => ({
  setLogout: () => dispatch(setLogout())
})

export default connect(mapStateToProps, mapDispatchToProps)(MyAccount)

因此,我将一些道具传递给已连接的组件,演示组件 MyAccount 也可以访问这些道具。

以前,如果要实现这一点,我将在mapStateToProps中添加第二个参数,如下所示。但是现在看来没有必要通过ownProps吗?有人可以确认吗?

const mapStateToProps = (state, ownProps) => ({
  isLoggedIn: state.isLoggedIn,
  ...ownProps
})

1 个答案:

答案 0 :(得分:2)

来自react-redux docs

ownProps(可选)

[...]

您不需要在ownProps返回的对象中包含mapStateToProps的值。 connect将自动将这些不同的道具来源合并为最终的道具集合。

是的,没有必要将ownProps显式传播到mapStateToProps返回的道具中。

如果您的组件需要来自其自身道具的数据来从商店中检索数据,例如,通常只需要ownProps。使用id道具从项目列表中选择某个项目。