我正在用ReactJS和Redux构建一个简单的todo应用程序,但是当我试图检索我添加到初始状态列表中的todo时,我得到了一个错误。错误如下:
未捕获的类型错误:无法读取未定义的属性(阅读“list”)
错误来自这一行:
export const selectTodos = (state) => state.todos.list;
字符串
切片代码:
import { createSlice } from "@reduxjs/toolkit";
const initialState = {
list: [],
};
export const todosSlice = createSlice({
name: "todos",
initialState,
reducers: {
addTodo: (state, action) => {
state.list = [...state.list, action.payload];
},
},
});
export const { addTodo } = todosSlice.actions;
export const selectTodos = (state) => state.todos.list;
export default todosSlice.reducer;
型
APP.JSX:
import React, { useRef } from "react";
import { useDispatch, useSelector } from "react-redux";
import { addTodo, selectTodos } from "./features/todos/todosSlice";
const App = () => {
const inputRef = useRef(null);
const todos = useSelector(selectTodos);
const dispatch = useDispatch();
const createTodo = async (e) => {
e.preventDefault();
const newTodo = inputRef.current.value;
dispatch(addTodo(newTodo));
};
return (
<div>
<h1>Todo List</h1>
<form>
<input type="text" placeholder="task..." ref={inputRef} />
<button onClick={createTodo}>Add Todo</button>
</form>
<h2>Your Todos:</h2>
{todos}
</div>
);
};
export default App;
型
INDEX.JSX:
import React from "react";
import { createRoot } from "react-dom/client";
import { Provider } from "react-redux";
import { store } from "./app/store";
import App from "./App";
import "./index.css";
const container = document.getElementById("root");
const root = createRoot(container);
root.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>
);
型
STORE.JS:
import { configureStore } from "@reduxjs/toolkit";
import todosReducer from "../features/todos/todosSlice";
export const store = configureStore({
reducer: {
todo: todosReducer,
},
});
型
如果你有任何建议,请告诉我。
1条答案
按热度按时间xvw2m8pv1#
错误是我使用了错误的名称来访问列表。我用了“todos”而不是“todo”