【发布时间】:2018-04-09 20:31:47
【问题描述】:
尝试了两种方法:
-
从
componentDidMount();中的Starter组件中的动作创建者调用connectToServer()并像这样调度:let socket = new Socket('ws://address/socket'); socket.connect(); dispatch({ type: Constants.SESSION_SAVE_SOCKET, socket: socket, }); const lobbyChannel = socket.channel('lobby'); lobbyChannel.join() .receive('ok', () => { dispatch({ type: Constants.SESSION_LOBBYCHANNEL_RECEIVE_OK, }); dispatch({ type: Constants.SESSION_SAVE_LOBBYCHANNEL, lobbyChannel: lobbyChannel, }); }).receive('error', (payload) => { dispatch({ type: Constants.SESSION_LOBBYCHANNEL_RECEIVE_ERROR, }); });
接下来我通过 redux 的 mapStateToProps connect 接收状态。
结果是组件被调用了四次,结果 props 为空。
- 将所有逻辑放入reducer,但结果是:组件被渲染为空道具(未定义的属性),并且在我在控制台日志中看到建立连接后,组件已经被渲染。
如何处理这样的问题?感谢您的任何建议。
【问题讨论】:
标签: reactjs react-redux phoenix-framework phoenix-channels