- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 react
和 redux
创建一个简单的计数器应用程序。
以下是counterSlice.js
文件。
import { createSlice } from "@reduxjs/toolkit";
export const counterSlice = createSlice({
name: "counter",
initialState: { count: 0 },
reducers: {
changeValueBy(state, action) {
const value = action.payload;
state["count"] = state["count"] + value;
}
}
});
export const { changeValueBy } = counterSlice.actions;
export const selectCount = (state) => state.count;
export default counterSlice.reducer;
app/store.js
文件如下:
import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "../features/counter/counterSlice";
export default configureStore({
reducer: {
counter: counterReducer
}
});
index.js
文件如下:
import App from "./App";
import store from "./app/store";
import { Provider } from "react-redux"
ReactDOM.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>,
document.getElementById("root")
);
使用此设置,代码不起作用。(完整代码在 this sandbox 中)
但是通过以下设置,store
可以正常工作。
App.js
文件:
import { Counter } from "./features/counter/Counter";
import "./App.css";
import { Provider } from "react-redux";
import { createStore } from "redux";
import counterSlice from "./features/counter/counterSlice";
const store = createStore(counterSlice);
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<Provider store={store}>
<Counter />
</Provider>
</header>
</div>
);
}
整个代码在this sandbox中.
我想使用 @reduxjs/toolkit
包中的 configureStore
而不是来自 redux
的过时的 createStore
> 包。
知道如何实现吗?
最佳答案
export default configureStore({
reducer: {
counter: counterReducer
}
});
相当于
const store = createStore(combineReducers: {
counter: counterSlice
});
这意味着来自 counterSlice
的数据将在 state.counter
中找到。
您的旧代码执行 createStore(counterSlice)
,这意味着来自 counterSlice
的数据将在 state
中找到。
所以,两者都有效,但您必须根据您的工作从不同的地方选择数据。
你的选择器
export const selectCount = (state) => state.count;
必须是
export const selectCount = (state) => state.counter.count;
相反。
关于javascript - 为什么 createStore 有效而 configureStore 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73760876/
我正在使用 react 和 redux 创建一个简单的计数器应用程序。 以下是counterSlice.js文件。 import { createSlice } from "@reduxjs/tool
这个问题在这里已经有了答案: When should I use curly braces for ES6 import? (11 个答案) 关闭 6 年前。 商店.js import {creat
我已经看到了注销后清除/重置存储的解决方案,但不明白如何为以下设置 redux 存储的方式实现相同的功能。 Store.js: import { configureStore, getDefaultM
我正在开发纯粹的 redux-saga 应用程序,但随着应用程序的增长,文件的数量也在增长。为了解决这个问题,我尝试将 redux-starter-kit 设置到我当前的应用程序中。 这是我的商店配置
我正在开发纯粹的 redux-saga 应用程序,但随着应用程序的增长,文件的数量也在增长。为了解决这个问题,我尝试将 redux-starter-kit 设置到我当前的应用程序中。 这是我的商店配置
我是一名优秀的程序员,十分优秀!