如何将上下文使用者传递给仅由React Router呈现的组件(Event.js)?

时间:2019-03-24 10:53:53

标签: javascript reactjs react-router react-context

我的应用程序正在使用React Router(Router.js),我正在尝试使用Context API实现CentralStore,以将状态传递给Router呈现的Event.js组件。

如何将上下文使用者传递给仅由React Router呈现的组件(Event.js)?现在,在Event.js中未定义AppContext。

实时代码:https://codesandbox.io/s/0x83zz0jmw

Pipfile.lock

1 个答案:

答案 0 :(得分:0)

通过从CentralStore组件导出AppContext解决了问题

// The missing export

export const AppContext = React.createContext();

class CentralStore extends React.Component {
  state={
    events: false,
  }

  componentDidMount() {
    firebase
      .collection("events")
      .get()      
      .then( querySnapshot => {
        const events = [];
        querySnapshot.docs.forEach(doc => {
          events.push(doc.data());
        });
        this.setState({
          events: events
        });
      });
  }

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