我正在为多频道聊天应用创建一个React/Redux前端.我有得到一些问题,反应的组分,同时使用状态改变后重新渲染redux,react-redux和redux-thunk.
我相信我的减速器是非变异的,而且我是通过它订阅react-redux的connect.当我运行应用程序并查看浏览器控制台时,我看到组件的初始渲染(即具有初始,空状态),然后状态更改(由操作调度触发index.js)....我会期望组件使用新道具重新渲染,但它不会发生.
我在这里张贴了一个回购:https: //github.com/mattmoss/react-redux-no-update
node_modules不在repo中,所以要运行,首先下载依赖项(运行yarn就足够了),然后npm start.
一些摘录(请参阅回购中的完整资料):
reducers/channelList.jsimport * as c from '../actions/constants';
export default function channelList(state = [], action) {
switch (action.type) {
case c.FETCH_CHANNELS_SUCCESS:
return action.channels;
default:
return state;
}
}
Run Code Online (Sandbox Code Playgroud)
actions/channelActions.jsexport function fetchChannels() {
return (dispatch) => {
return ChannelApi.allChannels()
.then(channels => dispatch(fetchChannelsSuccess(channels)))
.catch(error => { throw(error); });
};
}
export function fetchChannelsSuccess(channels) {
return { …Run Code Online (Sandbox Code Playgroud)