“state.set 不是函数”作为我的 react-redux-immutable 学习曲线的一部分

拉巴沙尼

动作创建者被调用两次,它在第一种情况下工作得很好,但在第二次调用时没有按预期工作。第一次。这在第二次通话中一直发生。

在我设置状态之前将状态写入控制台,获取那些有趣的细节,我不清楚我做错了什么

这是第一次出现的状态,在设置之前 - 在此处输入图片说明

这是第二次通话时的状态 - 在此处输入图片说明

// The Action Creator
import config from "../../Config";
export const getLiveComments = () => {

    return (dispatch) => {
        fetchComments()
            .then(response => {
                if (!response.ok){
                    throw Error(response.statusText);
                }

                response.json().then(
                    comments => dispatch(gotComments(comments)))
            }
        ).catch(function(error) {
            console.log('There has been a problem with your fetch operation: ' + error.message);
        })
    };

};

function fetchComments(){
    return fetch(`${config.apiurl}/live-comments/get`, {
        method: 'GET',
            credentials: 'same-origin',
            headers: {
                'Accept': 'application/json, text/plain, */*',
                'Content-Type': 'application/json'
            }
        })
}

function gotComments(comments){
    return {
        type: 'GOT_COMMENTS',
        comments:comments
    }
}


//The Reducer
import Immutable from 'immutable';
const initialState = Immutable.fromJS({
    comments: []
});

export default function (state = initialState, action) {
    switch (action.type) {
        case ("GOT_COMMENTS"):
            console.log('STATE (COMMENTS)', state)
            return state.set('comments', action.comments).toJS();
        default:
            return state;
    }
}

reducer-live-comments.js:10 Uncaught (in promise) TypeError: state.set is not a function at ./src/common/ChatMessages/reducer-live-comments.js。webpack_exports .a (reducer-live-comments.js:10) at combineReducers.js:39 at Array.forEach () at combineReducers.js:36 at Map.withMutations (immutable.js:1353) at combineReducers.js:35 at computeNextEntry (:2:27469) at recomputeStates (:2:27769) at :2:31382 at Object.dispatch (createStore.js:165) at dispatch (:2:31875) at index.js:14 at index.js: 21 分派 (applyMiddleware.js:35) at get-live-comments.js:22 at

乔纳森·迪翁

问题是你的减速机。

return state.set('comments', action.comments).toJS();

去掉 .toJS()

例如: const newState = state.setIn(['comments'], fromJS(action.comments))

更多信息在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 redux 和 react,为什么获取新数据会删除我以前状态的一部分?

Promise 作为 redux 状态的一部分

组件中仅呈现了一部分更新状态(React / Redux)

React Native Set State 不是一个函数,在每个循环中不确定绑定?

react-redux:state.setIn()和state.set()有什么区别?

将Redux.createStore与Immutable一起使用会引发“减少器不是函数(如何将Redux与Immutable.js和composeEnhancers一起使用)

如何在React应用程序中仅加载Redux存储的一部分

React TypeScript:如何使用变量名作为键的一部分

通过react JS中的函数渲染组件的一部分

我如何在React Native中剪切视图的一部分

尝试映射react-redux状态时,state.get不是函数

我可以使用相同的代码遍历一个immutable.List,immutable.Set或Javascript数组或Set吗?

使用 Immutable 时更新 react-redux 中的状态

使用 React Context 作为 useEffect 依赖数组的一部分,用于简单的 toast 通知系统

是否可以使用香草JavaScript而不是react.js来呈现网站的一部分?

React:只有在第一部分完全完成后才执行后面的函数

React Redux onDeleteClick不是函数

使用immutable.js进行React和Redux:从列表中删除一项时无法获取正确的状态数据

React Redux-> TypeError:对象(...)不是一个函数

state.getState() 在更新到 redux 4 时不是一个函数

react-router-redux和redux-immutable:您不能更改<Router history>;它将被忽略

react / redux / immutable / redux持久化:不持久化到本地存储

React-Redux:在构造函数上调度-> props.store.state未更新

如何下载 React 组件的一部分?

React/Axios - 显示 URL 的一部分

React Redux -> 为什么我得到 TypeError: state.item is not iterable

当作为道具的一部分传递给自定义react组件时,为什么index没有资格作为唯一键?

React.js 当 scrollTop 为 0 时,检测我们在第一部分,使用 react-full-page npm

如何使TfidfVectorizer只学习字母字符作为词汇的一部分(不包括数字)