Redux MapStateTops和mapDispatchToProps中的ownProps arg有什么用途?

Redux MapStateTops和mapDispatchToProps中的ownProps arg有什么用途?,redux,react-redux,Redux,React Redux,我看到传递给Redux中的connect函数的mapstatetrops和mapsdispatchtoprops函数将ownProps作为第二个参数 [mapStateToProps(state, [ownProps]): stateProps] (Function): [mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function): 可选的[ownprops]参数是什么 我正在寻找一个额外的示例来

我看到传递给Redux中的
connect
函数的
mapstatetrops
mapsdispatchtoprops
函数将
ownProps
作为第二个参数

[mapStateToProps(state, [ownProps]): stateProps] (Function):

[mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function):
可选的
[ownprops]
参数是什么


我正在寻找一个额外的示例来说明问题,因为中已经有一个示例。如果指定了
ownProps
参数,react-redux将把传递到组件的props传递到
connect
函数中。因此,如果使用这样的连接组件:

从“./containers/ConnectedComponent”导入ConnectedComponent
MapStateTrops
mapDispatchToProps
函数中的
ownProps
将是一个对象:

{value:'example'}
您可以使用这个对象来决定从这些函数返回什么


例如,在博客文章组件上:

//BlogPost.js
导出默认函数BlogPost(道具){
返回
{props.title}
{props.content}

编辑 }
您可以将做某些事情的Redux action创建者返回到该特定帖子:

//BlogPostContainer.js
从“redux”导入{bindActionCreators}
从“react redux”导入{connect}
从“./BlogPost.js”导入BlogPost
将*作为操作从“/actions.js”导入
常量mapStateToProps=(状态、道具)=>
//从存储中获取此博客帖子ID的博客帖子数据。
getBlogPostData(状态,props.id)
const mapDispatchToProps=(调度,道具)=>bindActionCreators({
//自动将博客帖子ID传递给操作创建者,以便
//包装的博客文章组件可以简单地调用'props.editBlogPost()`:
editBlogPost:()=>actions.editBlogPost(props.id)
},调度)
const BlogPostContainer=connect(mapStateToProps,mapDispatchToProps)(BlogPost)
导出默认BlogPostContainer
现在您可以这样使用此组件:

从“./BlogPostContainer.js”导入BlogPostContainer

goto bus stop的答案很好,但有一件事需要记住,根据redux的作者Abramov/gaearon的说法,在这些功能中使用自己的道具会使它们变慢,因为道具改变时,它们必须重新绑定动作创建者

请参见此链接中的他的评论:
ownProps指的是父级传递的道具

例如:

Parent.jsx:


你能说得更具体些吗;你链接到的文档中对该论点的解释有什么不清楚的地方?我只是想找一个使用该论点的其他实际例子。那么你能问个问题来澄清一下吗?@jonrsharpe react-redux文档没有说它是什么,只是说它存在,被称为ownProps,函数的算术性决定了它是否被传递,而不是它是什么。@deb0ch我不知道18个月前它说了什么,但现在它说“props传递给连接的组件”。无论哪种方式,OP都编辑了问题,收到并接受了答案。注意-默认道具不包括在OwnProps中。我不明白。你能解释一下默认值吗props@Ali-在本答案的示例中,如果
BlogPost
组件具有默认属性(使用
BlogPost.defaultProps={}
或默认参数值语法),则这些值将不属于
ownProps
对象。只有显式提供的属性才可用。这是因为React将在稍后阶段填充默认值,而
connect()
代码将在此之前运行。@goto bus stop我明白了。非常感谢。
...
<Child prop1={someValue} />
...
class Child extends Component {
  props: {
    prop1: string,
    prop2: string,
  };
...
}

const mapStateToProps = (state, ownProps) => {
  const prop1 = ownProps.prop1;
  const tmp = state.apiData[prop1]; // some process on the value of prop1
  return {
    prop2: tmp
  };
};