reactjs - 我无法在我的 React Redux 应用程序中访问状态对象
问题描述
我是 React 和 Redux 的新手,我正在构建一个简单的 SPA,通过输入表单将项目添加到列表中。我初始化了状态,我有 2 个默认项目值并且我成功地添加了项目,但是当我想删除减速器中的一个对象时,我无法访问 state.projects 它说这是未定义的,我不明白为什么。你能帮我吗?
这是我的减速机:
const projects = (state = 'ADD_PROJECT', action) => {
switch (action.type) {
case 'ADD_PROJECT':
return [
...state,
action.payload
]
case 'REMOVE_PROJECT':
console.log(state.projects);
return Object.assign({}, state, {
projects: [state.projects.filter(project => project.id !== action.payload.id)],
})
default:
return state
}
export default projects
这是动作
export const addProject = (project) => {
return {
type: 'ADD_PROJECT',
payload: project
}
}
export const removeProject = (id) => {
return {
type: 'REMOVE_PROJECT',
payload: id
}
}
这就是我创建商店和初始状态的方式
const initialState = {
projects: [{
id:100,
name:"Project 1"
},{
id:101,
name:"Project 2"
}]
};
let store = createStore(projectApp, initialState,
window.__REDUX_DEVTOOLS_EXTENSION__ &&
window.__REDUX_DEVTOOLS_EXTENSION__());
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
解决方案
过滤掉项目时似乎有一个额外的括号。有效负载id
本身也是(id === action.payload)。REMOVE_PROJECT
在reducer中试试这个:
projects: state.projects.filter(project => project.id !== action.payload)
推荐阅读
- java - 是否可以使用 kafka-console-producer 通过事务客户端发送消息?
- spring - 如何将自定义 OAuth2AuthorizationFailureHandler 添加到 DefaultOAuth2AuthorizedClientManager?
- wolfram-mathematica - 在 Mathics 中将列表或数组元素打印为下标
- r - esquisserUI 小部件因 Shiny 中 uiOutput 的自动缩放而错位
- angular - npm install 不会安装正确的包
- php - PHP Regex 获取自定义文档参数
- java - 在 Spring 中使用 RestTemplate 进行复杂的 Json 映射
- .net - VB.NET 在不同位置的 PictureBox 上绘制多个图像
- ios - 启动反应原生应用程序会出现工具链或 AppRegistry 错误
- python - 我想在不编辑代码的情况下将站点添加到我的 url 字符串