How can I access complete state in redux?

const { createStore } = require("redux");

const initialState = {
  posts: [
    { id: 1, title: "Post one" },
    { id: 2, title: "Post two" },
  ],
};

我的帖子减少器

const PostsReducer = (state = initialState, action) => {
  switch (action.type) {
    case "add_post":
      return {
        ...state,
        posts: [...state.posts, action.payload],
      };

    case "delete_post":
      return {
        ...state,
        posts: state.posts.filter((post) => post.id !== action.payload),
      };

    case "get_all_posts":
      return state.posts;

    default:
      return state;
  }
};

const store = createStore(PostsReducer);

我的动作创作者:

const GetAllPosts = () => {
  return {
    type: "get_all_posts",
  };
};

const AddPost = (payload) => {
  return { type: "add_post", payload };
};

const removePost = (payload) => {
  return { type: "delete_post", payload };
};

访问store 数据:

store.subscribe(() => {
  const data = store.getState();
  console.log(data.posts);
});

store.dispatch(GetAllPosts());

当我在控制台登录data.posts时,它返回undefined.

我正在使用订阅者方法访问:

store.subscribe(() => {
  const data = store.getState();
  console.log(data.posts);
});

store.dispatch(GetAllPosts());

注:

我正在使用Redux(4.2.1)

通过使用GetAllPosts(),我可以访问数据,但我无法在控制台中获取data.posts.

推荐答案

get_all_posts case 直接返回state.posts数组,而不是设置具有posts属性的状态对象.

case "get_all_posts":
  return state.posts; // <-- just the posts array

更新get_all_posts case 以返回正确的状态不变量,很可能是包含所有帖子的初始状态值.

示例:

const initialState = {
  posts: [
    { id: 1, title: "Post one" },
    { id: 2, title: "Post two" },
  ],
};

const PostsReducer = (state = initialState, action) => {
  switch (action.type) {
    case "add_post":
      return {
        ...state,
        posts: [...state.posts, action.payload],
      };

    case "delete_post":
      return {
        ...state,
        posts: state.posts.filter((post) => post.id !== action.payload),
      };

    case "get_all_posts":
      return { ...initialState };

    default:
      return state;
  }
};

Javascript相关问答推荐

Flisk和JS错误:未捕获的Syntax错误:意外的令牌'<'

GrapeJS -如何保存和加载自定义页面

如何使覆盖div与可水平滚动的父div相关?

在我的html表单中的用户输入没有被传送到我的google表单中

并不是所有的iframe都被更换

S文本内容和值不必要的不同

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

ChartJs未呈现

为什么123[';toString';].long返回1?

在浏览器中触发插入事件时检索编码值的能力

更新动态数据中对象或数组中的所有值字符串

连接到游戏的玩家不会在浏览器在线游戏中呈现

未加载css colored颜色 ,无法将div设置为可见和不可见

从另一个数组中的对应行/键值对更新数组中的键值对对象

在VS代码上一次设置多个变量格式

回溯替代方式

Google脚本数组映射函数横向输出

每隔3个项目交替显示,然后每1个项目交替显示

不协调嵌入图片

为什么我不能使用其同级元素调用和更新子元素?