如何在上下文提供者中访问StaticRouter的“上下文”道具

时间:2019-07-16 03:39:39

标签: reactjs ssr react-context

我正在为React的Context API开发服务器端呈现的实现,并且在将StaticRouter封装在我的Provider周围时,就像这样:

<StaticRouter location={req.path} context={{users: data}}>
  <UserProvider>
    {renderRoutes(Routes)}
  </UserProvider>
</StaticRouter>

我无法从我的提供程序组件中访问“ staticContext”属性。

class UserProvider extends Component {
  constructor(props) {
    super(props)
    /* HERE */
    let users = isBrowser ? window.CONTEXT_VALUE 
    : this.props.staticContext.users;

    this.state = {
      users,
      getUsers: () => {},
      addUser: (user) => {}
    }
  }

  componentDidMount() {

  }

  render() {
    return (
      <UserContext.Provider value={this.state}>
        {this.props.children}
      </UserContext.Provider>
    );
  }
}

堆栈给我错误:“无法读取未定义的属性'users'”

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

根据docs,只有在常规“路由” Object[]中声明的路由才能访问staticContext属性,而不能访问{{1} }正在包装。