我将通过提到我对 React 和 Redux 都是新手来作为这个问题的开头......
我正在使用 BotFramework-WebChat 示例中的示例 #14。
此外,为了通过管道传递 Redux 操作活动以更改 UI,我还想包括侦听“DIRECT_LINE/CONNECT_FULFILLED”然后使用“webchat/join”有效负载分派“WEB_CHAT/SEND_EVENT”的中间件,以便我可以显示欢迎信息。
我尝试将 dispatchIncomingActivityMiddleware.js 修改为如下所示:
export default function (dispatch) {
return () => next => action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const { activity } = action.payload;
if (
activity.type === 'event'
&& activity.from.role === 'bot'
&& activity.name === 'redux action'
) {
dispatch(activity.value);
}
} else if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: {
language: window.navigator.language
}
}
});
}
return next(action);
};
}
不用说,它不起作用。我认为这是因为现在所有操作都被分派到第二个应用程序 Redux 商店而不是 Web Chat Redux 商店。我的问题是,我如何让它两者兼得?有没有办法将某些操作分派到应用程序 Redux 商店,并将其他操作分派到网络聊天商店?还有另一种方法可以实现这一目标吗?