React Router 4 问题传递道具,只传递位置

React Router 4 issue passing props, only location is being passed

这是我遇到的问题的简化版本

我正在尝试将一些属性传递给我的组件 (SomeComponent),但只传递了位置 (routerProps)

<Router>
  <Switch>
    <Route
      exact
      path="/"
      render={routerProps => (
        <SomeComponent
          test="XXX"
          collections={this.props}
          {...routerProps}
        />
      )}
    />

    <Route exact strict path="/:id" component={SomeComponent2} />
    <Route
      render={() => <SiteError error="404" status="404" />}
    />
  </Switch>
</Router>

加载 SomeComponent 时,只有位置属性 (routerProps) 可用,测试和集合不存在(也没有错误)

任何想法

感谢

您可以使用我的组件,它的行为类似于 Route 组件,但它将 Route 上的 props 传递给子组件。我从 Whosebug 上的某个地方复制了它,但我忘了从哪里了。

import React from "react";
import PropTypes from "prop-types";
import Route from "react-router-dom/Route";

const renderMergedProps = (component, ...rest) => {
  const finalProps = Object.assign({}, ...rest);
  return React.createElement(component, finalProps);
};

const propsRoute = ({ component, ...rest }) => (
  <Route
    {...rest}
    render={routeProps => renderMergedProps(component, routeProps, rest)}
  />
);

propsRoute.propTypes = {
  component: PropTypes.element
};

export default propsRoute;

用法示例:

<PropsRoute
   exact
   path="/blog"
   component={Blog}
   location={location}
   selectBlog={this.selectBlog}
   blogPosts={blogPosts}
 />